{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Quickstart\n", "\n", "## Estimating activities of fixed signatures" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To inject fixed signature definitions into the probabilistic model, we use pymc3's \"observed variable\" functionality. Once observed, the signature definitions will not be updated during inference. \n" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "import pymc3 as pm\n", "import arviz as az\n", "import numpy as np\n", "import pandas as pd\n", "import damuta as da\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "# Load data for 100 patients\n", "counts = pd.read_csv('example_data/pcawg_counts.csv', index_col=0).head(100)\n", "annotation = pd.read_csv('example_data/pcawg_cancer_types.csv', index_col=0).head(100)\n", "pcawg = da.DataSet(counts, annotation)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To fix the damage signatures, we will observe phi. To fix the misrepair signatures, we will observe eta in the C context, and in the T context. " ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "damuta_sigs = da.SignatureSet.from_damage_misrepair(\n", " pd.read_csv('example_data/damage_signatures.csv', index_col=0), \n", " pd.read_csv('example_data/misrepair_signatures.csv', index_col=0))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "ht_lda = da.models.HierarchicalTandemLda(pcawg, type_col = 'pcawg_class',\n", " phi_obs= damuta_sigs.damage_signatures.to_numpy(), \n", " etaC_obs= damuta_sigs.misrepair_signatures[['C>A', 'C>G', 'C>T']].to_numpy(),\n", " etaT_obs= damuta_sigs.misrepair_signatures[['T>A', 'T>C', 'T>G']].to_numpy())\n", "\n", "ht_lda._build_model(**ht_lda._model_kwargs)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", " \n", " 100.00% [10000/10000 00:54<00:00 Average Loss = 4.642e+05]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "Finished [100%]: Average Loss = 4.641e+05\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ht_lda.fit(n=10000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check for nice convergence" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGsCAYAAAAPJKchAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABMgElEQVR4nO3deVhUZf8G8HvYRRAVUDL3BZRFWdxFccs1K7fKXrXMMt/2n5aWZaavqWmWLVZWbmlqlmblrrkLuOMKskmIIKuyyjrP7w90ZJgZYGBmziz357q6rjnnPDPzZSrm5jnPIhNCCBARERFJxErqAoiIiMiyMYwQERGRpBhGiIiISFIMI0RERCQphhEiIiKSFMMIERERSYphhIiIiCTFMEJERESSYhghIiIiSTGMEBERkaRMKoycOXMG06dPR3BwMLy8vHDw4EGtX0MIgdWrV2Po0KHw9fVF37598d133+mhWiIiIqoJG6kL0EZBQQG8vLwwduxYvP7667V6jU8++QQnTpzArFmz4OnpiezsbGRnZ+u4UiIiIqopkwojISEhCAkJ0Xi9uLgYX3zxBXbu3Inc3Fx06NAB77zzDnr06AEAiIuLw+bNm/H333+jbdu2AIAWLVoYpHYiIiJSz6Ru01RnwYIFuHDhAr744gv89ddfGDZsGF566SUkJCQAAA4dOoTmzZvjyJEjGDhwIAYOHIgPPvgAd+/elbRuIiIiS2Y2YSQ5ORnbt2/Hl19+ia5du6Jly5aYOnUqgoKCsH37dgDAzZs3kZycjL1792Lp0qVYvHgxrl69ijfffFPi6omIiCyXSd2mqUp0dDTKysowbNgwpfPFxcVo2LAhgPLBq8XFxfj000/Rpk0bAOVjSMaMGYP4+HjFrRsiIiIyHLMJIwUFBbC2tsa2bdtgbW2tdM3R0REA4O7uDhsbG0UQAYB27doBAFJSUhhGiIiIJGA2YaRTp04oKytDVlYWunbtqrZNYGAgSktLkZiYiJYtWwKAYjxJs2bNDFUqERERVWBSY0by8/MRGRmJyMhIAEBSUhIiIyORnJyMNm3aYNSoUZg1axb279+Pmzdv4tKlS1i1ahWOHDkCAOjduzd8fHwwZ84cXLt2DVeuXMFHH32EPn36KPWWEBERkeHIhBBC6iJq6tSpU5g8ebLK+dGjR2PJkiUoKSnBd999hx07diAtLQ0NGzaEv78/3njjDXh5eQEAUlNTsXDhQpw4cQKOjo7o168fZs+erRhXQkRERIZlUmGEiIiIzI9J3aYhIiIi88MwQkRERJIyidk0crkcaWlpqF+/PmQymdTlEBERUQ0IIZCfn48mTZrAykpz/4dJhJG0tLQq96QhIiIi43X06FF4eHhovG4SYaR+/foAyn8YJycniashIiKimsjLy0NISIjie1wTkwgjD27NODk5MYwQERGZmOqGWHAAKxEREUmKYYSIiIgkxTBCREREkmIYISIiIkkxjBAREZGkGEaIiIhIUgwjREREJCmGESIiIpIUwwgRERFJimGEiIiIJMUwQkRERJJiGCEiIiJJWXwYKZMLrDlxA1duZUtdChERkUUyiV179em3szexYOc1AEDCkpESV0NERGR5tOoZ2bRpE0aNGoXAwEAEBgbimWeewdGjR6t8zp49ezBs2DD4+flh1KhR1bY3tMiUHKlLICIismhahREPDw+888472L59O7Zt24aePXvitddeQ0xMjNr258+fx8yZMzFu3Djs2LEDgwYNwmuvvYbo6GidFE9ERESmT6swMnDgQISEhKB169Zo06YN/u///g+Ojo6IiIhQ2/7nn39G37598dJLL6Fdu3Z4++234e3tjY0bN+qidp2QyWRSl0BERGTRaj2AtaysDLt27UJBQQECAgLUtomIiECvXr2UzgUHB2sML0RERGR5tB7Aev36dTz77LMoKiqCo6MjVq5cifbt26ttm5GRATc3N6Vzrq6uyMjIqF21REREZHa07hlp06YNduzYga1bt2LChAmYPXs2YmNj9VEbERERWQCtw4idnR1atWoFX19fzJw5Ex07dsTPP/+stq2bm5tKL0hmZqZKbwkRERFZrjoveiaXy1FcXKz2mr+/P8LDw5XOhYaGwt/fv65vS0RERGZCqzCyfPlynDlzBklJSbh+/TqWL1+O06dPY9SoUQCAWbNmYfny5Yr2kydPxvHjx7FmzRrExcXh66+/xpUrVzBx4kTd/hRERERksrQawJqZmYnZs2cjLS0Nzs7O8PLywurVq9GnTx8AQEpKCqysHuabwMBAfPbZZ1ixYgU+//xztG7dGitXroSnp6dufwodKS2TIzO/GE0bOEhdChERkcWQCSGE1EVUJy8vD0FBQTh37hycnJx0+tpvb7mAHRHJSudWPheIkZ0f0en7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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(ht_lda.approx.hist)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Under the hood\n", "\n", "Signature activities can be estimated from the product of the damage activities ($\\theta$) and the association matrix ($A$). We call this product $W$, where for draw $d$ from the posterior, genome $g$, damage signature $i$ and misrepair signature $j$, $W_{dgij} = \\theta_{dgi} A_{dgij}$. Because of the compositional properties of signature activities, $\\Sigma_{i}\\theta_{dgi} = 1$ and $\\Sigma_{j}A_{dgij} = 1$. This means we can conveinently marginalize over the damage, and misrepair axes of $W$ to get damage activities $\\theta_{dgi} = \\Sigma_{j}W_{dgij}$ and misrepair activities $\\Gamma_{gdj} = \\Sigma_{i}W_{dgij}$\n", "\n", "\n", "\n", "Let's see this in code:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trace = ht_lda.approx.sample(10)\n", "trace" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "theta shape: (10, 100, 18)\n", "A shape: (10, 18, 100, 6)\n", "A reshaped: (10, 100, 18, 6)\n", "W shape: (10, 100, 18, 6)\n", "W correctly marginalizes to theta: True\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01234567891011121314151617
00.0181480.0414220.0142170.0526630.0496120.0588110.0715370.1304970.0665730.0352610.0216670.1241210.0168080.0309070.0473770.0719720.0104400.137968
10.1966960.0044200.0188410.0132700.0169260.0236710.1621950.0365930.0766750.0047260.0113170.0146300.0468200.0017040.0913350.0839350.1102140.086030
20.0271790.0062440.0209420.0276590.0072120.0342480.2415640.0877620.0292290.0040690.0062100.0707100.0112100.0350430.0598920.3020420.0113070.017476
30.1627150.0044950.0244840.0092290.0045690.0417330.1070430.0597140.0411130.0053060.0050990.0778700.0323880.0103510.0450680.1511630.1942210.023440
40.0487260.0186710.0321670.0077280.0227930.0871950.1018310.0981920.0275940.0130960.0108400.1592020.0260110.0145190.1404010.0856580.0879180.017457
.........................................................
950.0232370.0191540.0557150.0341480.0217700.0236280.1053200.0714240.0364900.0164330.0174060.1461230.0339860.0413990.0880430.1400260.0473840.078316
960.0932140.0206990.0450640.0060780.0289220.0099750.0605950.1159970.0370200.0196650.0252360.1223530.0133750.0079780.0874750.0554010.1834670.067485
970.0762100.0674830.0229330.0669860.0748950.0052010.0425600.0627130.0285070.0477430.0245560.0853470.0263250.0745390.0642780.0607880.1198470.049088
980.0030440.5485100.0115090.0020590.1629060.0023140.0017860.0023270.0023760.2333130.0116350.0026600.0015250.0015290.0049570.0021730.0032060.002169
990.0055700.0346850.0045590.0126140.0190750.0036560.0074500.0039300.0072160.0894700.5043620.0043620.2387390.0340960.0040490.0154850.0060490.004633
\n", "

100 rows × 18 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 \\\n", "0 0.018148 0.041422 0.014217 0.052663 0.049612 0.058811 0.071537 \n", "1 0.196696 0.004420 0.018841 0.013270 0.016926 0.023671 0.162195 \n", "2 0.027179 0.006244 0.020942 0.027659 0.007212 0.034248 0.241564 \n", "3 0.162715 0.004495 0.024484 0.009229 0.004569 0.041733 0.107043 \n", "4 0.048726 0.018671 0.032167 0.007728 0.022793 0.087195 0.101831 \n", ".. ... ... ... ... ... ... ... \n", "95 0.023237 0.019154 0.055715 0.034148 0.021770 0.023628 0.105320 \n", "96 0.093214 0.020699 0.045064 0.006078 0.028922 0.009975 0.060595 \n", "97 0.076210 0.067483 0.022933 0.066986 0.074895 0.005201 0.042560 \n", "98 0.003044 0.548510 0.011509 0.002059 0.162906 0.002314 0.001786 \n", "99 0.005570 0.034685 0.004559 0.012614 0.019075 0.003656 0.007450 \n", "\n", " 7 8 9 10 11 12 13 \\\n", "0 0.130497 0.066573 0.035261 0.021667 0.124121 0.016808 0.030907 \n", "1 0.036593 0.076675 0.004726 0.011317 0.014630 0.046820 0.001704 \n", "2 0.087762 0.029229 0.004069 0.006210 0.070710 0.011210 0.035043 \n", "3 0.059714 0.041113 0.005306 0.005099 0.077870 0.032388 0.010351 \n", "4 0.098192 0.027594 0.013096 0.010840 0.159202 0.026011 0.014519 \n", ".. ... ... ... ... ... ... ... \n", "95 0.071424 0.036490 0.016433 0.017406 0.146123 0.033986 0.041399 \n", "96 0.115997 0.037020 0.019665 0.025236 0.122353 0.013375 0.007978 \n", "97 0.062713 0.028507 0.047743 0.024556 0.085347 0.026325 0.074539 \n", "98 0.002327 0.002376 0.233313 0.011635 0.002660 0.001525 0.001529 \n", "99 0.003930 0.007216 0.089470 0.504362 0.004362 0.238739 0.034096 \n", "\n", " 14 15 16 17 \n", "0 0.047377 0.071972 0.010440 0.137968 \n", "1 0.091335 0.083935 0.110214 0.086030 \n", "2 0.059892 0.302042 0.011307 0.017476 \n", "3 0.045068 0.151163 0.194221 0.023440 \n", "4 0.140401 0.085658 0.087918 0.017457 \n", ".. ... ... ... ... \n", "95 0.088043 0.140026 0.047384 0.078316 \n", "96 0.087475 0.055401 0.183467 0.067485 \n", "97 0.064278 0.060788 0.119847 0.049088 \n", "98 0.004957 0.002173 0.003206 0.002169 \n", "99 0.004049 0.015485 0.006049 0.004633 \n", "\n", "[100 rows x 18 columns]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012345
00.1191630.0764730.0336220.3108430.2698850.190014
10.1406340.2074800.1735540.1636020.1791400.135590
20.0548990.0750410.3574460.1805870.3118750.020151
30.1453660.0797700.3953460.1180040.0643760.197138
40.1694100.0856090.2767510.1833470.1031060.181778
.....................
950.0962940.1474630.1564970.4021840.1478380.049724
960.1956060.1156330.1350810.1743190.1792040.200157
970.1445790.1575690.0804190.2221770.0831630.312092
980.0399810.0200320.1520370.5748590.0184320.194659
990.0149650.8696130.0361590.0101020.0519870.017174
\n", "

100 rows × 6 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5\n", "0 0.119163 0.076473 0.033622 0.310843 0.269885 0.190014\n", "1 0.140634 0.207480 0.173554 0.163602 0.179140 0.135590\n", "2 0.054899 0.075041 0.357446 0.180587 0.311875 0.020151\n", "3 0.145366 0.079770 0.395346 0.118004 0.064376 0.197138\n", "4 0.169410 0.085609 0.276751 0.183347 0.103106 0.181778\n", ".. ... ... ... ... ... ...\n", "95 0.096294 0.147463 0.156497 0.402184 0.147838 0.049724\n", "96 0.195606 0.115633 0.135081 0.174319 0.179204 0.200157\n", "97 0.144579 0.157569 0.080419 0.222177 0.083163 0.312092\n", "98 0.039981 0.020032 0.152037 0.574859 0.018432 0.194659\n", "99 0.014965 0.869613 0.036159 0.010102 0.051987 0.017174\n", "\n", "[100 rows x 6 columns]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(\"theta shape: \", trace.theta.shape)\n", "print(\"A shape: \", trace.A.shape)\n", "\n", "# reshape A for broadcasting \n", "# nb. only necssary for hierarchical model\n", "A = np.moveaxis(trace.A,1,2)\n", "print(\"A reshaped: \", A.shape)\n", "\n", "# compute W\n", "W = (trace.theta[:,:,:,None]*A)\n", "print(\"W shape: \", W.shape)\n", "\n", "# check that W sums to theta over the misrepair axis\n", "print(\"W correctly marginalizes to theta: \", np.allclose(W.sum(-1), trace.theta))\n", "\n", "theta = W.sum(-1)\n", "gamma = W.sum(-2)\n", "\n", "# display mean over 10 posterior samples\n", "display(pd.DataFrame(theta.mean(0)))\n", "display(pd.DataFrame(gamma.mean(0)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This functionality is implemented in the `TandemLDA` class as the convience method `get_estimated_activities_DataFrame()` which also adds back the sample index and turns it into a data frame. You could equally run this several times to get multiple posterior samples. \n", "\n", "To get the estimated activities for the signatures we provided:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15D16D17D18
0009b464-b376-4fbc-8a56-da538269a02f0.0239050.0421440.0128210.0676220.0566360.0522680.0823170.1253020.0623170.0156410.0148970.0942370.0126280.0264280.0689180.0827090.0050590.154153
003819bc-c415-4e76-887c-931d60ed39e70.3426390.0006480.0005140.0065780.0011240.0288500.3026480.0200010.0091850.0013870.0045080.0022990.0182330.0002720.0526650.1283040.0699780.010169
0040b1b6-b07a-4b6e-90ef-133523eaf4120.0232390.0116390.0348480.0208230.0074240.0423190.1874200.1312270.0319960.0091430.0026980.0947490.0151830.0385350.1384070.1886250.0097980.011924
00493087-9d9d-40ca-86d5-936f1b951c930.1014470.0082130.0132120.0103090.0056310.0544910.1214980.0511750.0320200.0098840.0033560.1222180.0363830.0090400.0462900.1213950.2169200.036517
00508f2b-36bf-44fc-b66b-97e1f3e40bfa0.0766860.0158700.0319080.0057820.0536130.0401260.1369350.0668220.0373070.0152420.0061760.0965850.0245350.0102370.2015610.0777060.0761080.026801
.........................................................
09508a0d-ebe0-4fa1-b7b2-1710814181cd0.0140240.0114550.0428050.0256310.0241040.0182950.1595750.0609680.0413220.0164980.0149660.1193940.0348350.0456820.1443920.0982130.0444230.083417
09537dce-c797-4b60-962a-d4c3cd6ab00a0.0586620.0275450.0699110.0061420.0140770.0135160.0409820.0753510.0339840.0125310.0209080.0867930.0352550.0100540.0478300.0565560.3139820.075921
0972bfcf-c6c6-48cc-b820-cdfa6279a4f30.1026850.0889970.0274290.0557790.0960250.0064400.0279400.0478490.0246640.0426520.0189330.0846350.0315750.0859590.0425140.0572400.1022920.056391
097a7d36-905b-72be-e050-11ac0d482c9a0.0022530.5021810.0075450.0036510.1468010.0020770.0024750.0022190.0034800.3026820.0070140.0014810.0018480.0019130.0047580.0019270.0021630.003533
0980e7fd-051d-45e9-9ca6-2baf073da4e80.0070270.0294390.0038830.0087630.0103730.0045350.0121420.0056210.0050900.0550010.4867080.0064880.2876870.0558310.0041110.0083870.0057730.003141
\n", "

100 rows × 18 columns

\n", "
" ], "text/plain": [ " D1 D2 D3 D4 \\\n", "0009b464-b376-4fbc-8a56-da538269a02f 0.023905 0.042144 0.012821 0.067622 \n", "003819bc-c415-4e76-887c-931d60ed39e7 0.342639 0.000648 0.000514 0.006578 \n", "0040b1b6-b07a-4b6e-90ef-133523eaf412 0.023239 0.011639 0.034848 0.020823 \n", "00493087-9d9d-40ca-86d5-936f1b951c93 0.101447 0.008213 0.013212 0.010309 \n", "00508f2b-36bf-44fc-b66b-97e1f3e40bfa 0.076686 0.015870 0.031908 0.005782 \n", "... ... ... ... ... \n", "09508a0d-ebe0-4fa1-b7b2-1710814181cd 0.014024 0.011455 0.042805 0.025631 \n", "09537dce-c797-4b60-962a-d4c3cd6ab00a 0.058662 0.027545 0.069911 0.006142 \n", "0972bfcf-c6c6-48cc-b820-cdfa6279a4f3 0.102685 0.088997 0.027429 0.055779 \n", "097a7d36-905b-72be-e050-11ac0d482c9a 0.002253 0.502181 0.007545 0.003651 \n", "0980e7fd-051d-45e9-9ca6-2baf073da4e8 0.007027 0.029439 0.003883 0.008763 \n", "\n", " D5 D6 D7 D8 \\\n", "0009b464-b376-4fbc-8a56-da538269a02f 0.056636 0.052268 0.082317 0.125302 \n", "003819bc-c415-4e76-887c-931d60ed39e7 0.001124 0.028850 0.302648 0.020001 \n", "0040b1b6-b07a-4b6e-90ef-133523eaf412 0.007424 0.042319 0.187420 0.131227 \n", "00493087-9d9d-40ca-86d5-936f1b951c93 0.005631 0.054491 0.121498 0.051175 \n", "00508f2b-36bf-44fc-b66b-97e1f3e40bfa 0.053613 0.040126 0.136935 0.066822 \n", "... ... ... ... ... \n", "09508a0d-ebe0-4fa1-b7b2-1710814181cd 0.024104 0.018295 0.159575 0.060968 \n", "09537dce-c797-4b60-962a-d4c3cd6ab00a 0.014077 0.013516 0.040982 0.075351 \n", "0972bfcf-c6c6-48cc-b820-cdfa6279a4f3 0.096025 0.006440 0.027940 0.047849 \n", "097a7d36-905b-72be-e050-11ac0d482c9a 0.146801 0.002077 0.002475 0.002219 \n", "0980e7fd-051d-45e9-9ca6-2baf073da4e8 0.010373 0.004535 0.012142 0.005621 \n", "\n", " D9 D10 D11 D12 \\\n", "0009b464-b376-4fbc-8a56-da538269a02f 0.062317 0.015641 0.014897 0.094237 \n", "003819bc-c415-4e76-887c-931d60ed39e7 0.009185 0.001387 0.004508 0.002299 \n", "0040b1b6-b07a-4b6e-90ef-133523eaf412 0.031996 0.009143 0.002698 0.094749 \n", "00493087-9d9d-40ca-86d5-936f1b951c93 0.032020 0.009884 0.003356 0.122218 \n", "00508f2b-36bf-44fc-b66b-97e1f3e40bfa 0.037307 0.015242 0.006176 0.096585 \n", "... ... ... ... ... \n", "09508a0d-ebe0-4fa1-b7b2-1710814181cd 0.041322 0.016498 0.014966 0.119394 \n", "09537dce-c797-4b60-962a-d4c3cd6ab00a 0.033984 0.012531 0.020908 0.086793 \n", "0972bfcf-c6c6-48cc-b820-cdfa6279a4f3 0.024664 0.042652 0.018933 0.084635 \n", "097a7d36-905b-72be-e050-11ac0d482c9a 0.003480 0.302682 0.007014 0.001481 \n", "0980e7fd-051d-45e9-9ca6-2baf073da4e8 0.005090 0.055001 0.486708 0.006488 \n", "\n", " D13 D14 D15 D16 \\\n", "0009b464-b376-4fbc-8a56-da538269a02f 0.012628 0.026428 0.068918 0.082709 \n", "003819bc-c415-4e76-887c-931d60ed39e7 0.018233 0.000272 0.052665 0.128304 \n", "0040b1b6-b07a-4b6e-90ef-133523eaf412 0.015183 0.038535 0.138407 0.188625 \n", "00493087-9d9d-40ca-86d5-936f1b951c93 0.036383 0.009040 0.046290 0.121395 \n", "00508f2b-36bf-44fc-b66b-97e1f3e40bfa 0.024535 0.010237 0.201561 0.077706 \n", "... ... ... ... ... \n", "09508a0d-ebe0-4fa1-b7b2-1710814181cd 0.034835 0.045682 0.144392 0.098213 \n", "09537dce-c797-4b60-962a-d4c3cd6ab00a 0.035255 0.010054 0.047830 0.056556 \n", "0972bfcf-c6c6-48cc-b820-cdfa6279a4f3 0.031575 0.085959 0.042514 0.057240 \n", "097a7d36-905b-72be-e050-11ac0d482c9a 0.001848 0.001913 0.004758 0.001927 \n", "0980e7fd-051d-45e9-9ca6-2baf073da4e8 0.287687 0.055831 0.004111 0.008387 \n", "\n", " D17 D18 \n", "0009b464-b376-4fbc-8a56-da538269a02f 0.005059 0.154153 \n", "003819bc-c415-4e76-887c-931d60ed39e7 0.069978 0.010169 \n", "0040b1b6-b07a-4b6e-90ef-133523eaf412 0.009798 0.011924 \n", "00493087-9d9d-40ca-86d5-936f1b951c93 0.216920 0.036517 \n", "00508f2b-36bf-44fc-b66b-97e1f3e40bfa 0.076108 0.026801 \n", "... ... ... \n", "09508a0d-ebe0-4fa1-b7b2-1710814181cd 0.044423 0.083417 \n", "09537dce-c797-4b60-962a-d4c3cd6ab00a 0.313982 0.075921 \n", "0972bfcf-c6c6-48cc-b820-cdfa6279a4f3 0.102292 0.056391 \n", "097a7d36-905b-72be-e050-11ac0d482c9a 0.002163 0.003533 \n", "0980e7fd-051d-45e9-9ca6-2baf073da4e8 0.005773 0.003141 \n", "\n", "[100 rows x 18 columns]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
M1M2M3M4M5M6
0009b464-b376-4fbc-8a56-da538269a02f0.2160040.0739330.0296880.2138740.2831960.183304
003819bc-c415-4e76-887c-931d60ed39e70.1062770.1922780.2972970.0795540.1906960.133898
0040b1b6-b07a-4b6e-90ef-133523eaf4120.0573560.0829560.4551590.1253510.2581560.021023
00493087-9d9d-40ca-86d5-936f1b951c930.1165190.0844190.3749200.1389020.0573220.227917
00508f2b-36bf-44fc-b66b-97e1f3e40bfa0.1846310.1122630.3338120.1438930.0699980.155402
.....................
09508a0d-ebe0-4fa1-b7b2-1710814181cd0.1020070.1727370.1358840.4032880.1282810.057803
09537dce-c797-4b60-962a-d4c3cd6ab00a0.2210850.0904710.0892200.1527180.2247530.221753
0972bfcf-c6c6-48cc-b820-cdfa6279a4f30.1404350.1801350.0827280.2433200.0924200.260961
097a7d36-905b-72be-e050-11ac0d482c9a0.0347300.0159960.1102410.5877000.0176740.233658
0980e7fd-051d-45e9-9ca6-2baf073da4e80.0146820.8567010.0412310.0100880.0623200.014977
\n", "

100 rows × 6 columns

\n", "
" ], "text/plain": [ " M1 M2 M3 M4 \\\n", "0009b464-b376-4fbc-8a56-da538269a02f 0.216004 0.073933 0.029688 0.213874 \n", "003819bc-c415-4e76-887c-931d60ed39e7 0.106277 0.192278 0.297297 0.079554 \n", "0040b1b6-b07a-4b6e-90ef-133523eaf412 0.057356 0.082956 0.455159 0.125351 \n", "00493087-9d9d-40ca-86d5-936f1b951c93 0.116519 0.084419 0.374920 0.138902 \n", "00508f2b-36bf-44fc-b66b-97e1f3e40bfa 0.184631 0.112263 0.333812 0.143893 \n", "... ... ... ... ... \n", "09508a0d-ebe0-4fa1-b7b2-1710814181cd 0.102007 0.172737 0.135884 0.403288 \n", "09537dce-c797-4b60-962a-d4c3cd6ab00a 0.221085 0.090471 0.089220 0.152718 \n", "0972bfcf-c6c6-48cc-b820-cdfa6279a4f3 0.140435 0.180135 0.082728 0.243320 \n", "097a7d36-905b-72be-e050-11ac0d482c9a 0.034730 0.015996 0.110241 0.587700 \n", "0980e7fd-051d-45e9-9ca6-2baf073da4e8 0.014682 0.856701 0.041231 0.010088 \n", "\n", " M5 M6 \n", "0009b464-b376-4fbc-8a56-da538269a02f 0.283196 0.183304 \n", "003819bc-c415-4e76-887c-931d60ed39e7 0.190696 0.133898 \n", "0040b1b6-b07a-4b6e-90ef-133523eaf412 0.258156 0.021023 \n", "00493087-9d9d-40ca-86d5-936f1b951c93 0.057322 0.227917 \n", "00508f2b-36bf-44fc-b66b-97e1f3e40bfa 0.069998 0.155402 \n", "... ... ... \n", "09508a0d-ebe0-4fa1-b7b2-1710814181cd 0.128281 0.057803 \n", "09537dce-c797-4b60-962a-d4c3cd6ab00a 0.224753 0.221753 \n", "0972bfcf-c6c6-48cc-b820-cdfa6279a4f3 0.092420 0.260961 \n", "097a7d36-905b-72be-e050-11ac0d482c9a 0.017674 0.233658 \n", "0980e7fd-051d-45e9-9ca6-2baf073da4e8 0.062320 0.014977 \n", "\n", "[100 rows x 6 columns]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "theta_df, gamma_df = ht_lda.get_estimated_activities_DataFrame()\n", "display(theta_df)\n", "display(gamma_df)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The DAMUTA model classes wrap pymc3 - we just saw how to sample a `MultiTrace` from the posterior, and we can also turn this into arviz `InferenceData`" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "idata = az.from_pymc3(trace, model = ht_lda.model)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
arviz.InferenceData
\n", "
\n", "
    \n", " \n", "
  • \n", " \n", " \n", "
    \n", "
    \n", "
      \n", "
      \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
      <xarray.Dataset>\n",
             "Dimensions:            (chain: 1, draw: 10, phi_dim_0: 18, phi_dim_1: 32,\n",
             "                        gamma_theta_dim_0: 100, gamma_theta_dim_1: 18,\n",
             "                        theta_dim_0: 100, theta_dim_1: 18, a_t_dim_0: 24,\n",
             "                        a_t_dim_1: 6, b_t_dim_0: 24, b_t_dim_1: 6,\n",
             "                        gamma_dim_0: 100, gamma_dim_1: 6, gamma_A_dim_0: 18,\n",
             "                        gamma_A_dim_1: 100, gamma_A_dim_2: 6, A_dim_0: 18,\n",
             "                        A_dim_1: 100, A_dim_2: 6, etaC_dim_0: 6, etaC_dim_1: 3,\n",
             "                        etaT_dim_0: 6, etaT_dim_1: 3, eta_dim_0: 6,\n",
             "                        eta_dim_1: 2, eta_dim_2: 3, B_dim_0: 100, B_dim_1: 96)\n",
             "Coordinates: (12/29)\n",
             "  * chain              (chain) int64 0\n",
             "  * draw               (draw) int64 0 1 2 3 4 5 6 7 8 9\n",
             "  * phi_dim_0          (phi_dim_0) int64 0 1 2 3 4 5 6 ... 11 12 13 14 15 16 17\n",
             "  * phi_dim_1          (phi_dim_1) int64 0 1 2 3 4 5 6 ... 25 26 27 28 29 30 31\n",
             "  * gamma_theta_dim_0  (gamma_theta_dim_0) int64 0 1 2 3 4 5 ... 95 96 97 98 99\n",
             "  * gamma_theta_dim_1  (gamma_theta_dim_1) int64 0 1 2 3 4 5 ... 13 14 15 16 17\n",
             "    ...                 ...\n",
             "  * etaT_dim_1         (etaT_dim_1) int64 0 1 2\n",
             "  * eta_dim_0          (eta_dim_0) int64 0 1 2 3 4 5\n",
             "  * eta_dim_1          (eta_dim_1) int64 0 1\n",
             "  * eta_dim_2          (eta_dim_2) int64 0 1 2\n",
             "  * B_dim_0            (B_dim_0) int64 0 1 2 3 4 5 6 7 ... 93 94 95 96 97 98 99\n",
             "  * B_dim_1            (B_dim_1) int64 0 1 2 3 4 5 6 7 ... 89 90 91 92 93 94 95\n",
             "Data variables:\n",
             "    phi                (chain, draw, phi_dim_0, phi_dim_1) float64 0.06077 .....\n",
             "    gamma_theta        (chain, draw, gamma_theta_dim_0, gamma_theta_dim_1) float64 ...\n",
             "    theta              (chain, draw, theta_dim_0, theta_dim_1) float64 0.0216...\n",
             "    a_t                (chain, draw, a_t_dim_0, a_t_dim_1) float64 0.8029 ......\n",
             "    b_t                (chain, draw, b_t_dim_0, b_t_dim_1) float64 0.6473 ......\n",
             "    gamma              (chain, draw, gamma_dim_0, gamma_dim_1) float64 0.9665...\n",
             "    gamma_A            (chain, draw, gamma_A_dim_0, gamma_A_dim_1, gamma_A_dim_2) float64 ...\n",
             "    A                  (chain, draw, A_dim_0, A_dim_1, A_dim_2) float64 0.091...\n",
             "    etaC               (chain, draw, etaC_dim_0, etaC_dim_1) float64 0.311 .....\n",
             "    etaT               (chain, draw, etaT_dim_0, etaT_dim_1) float64 0.3554 ....\n",
             "    eta                (chain, draw, eta_dim_0, eta_dim_1, eta_dim_2) float64 ...\n",
             "    B                  (chain, draw, B_dim_0, B_dim_1) float64 0.02305 ... 0....\n",
             "Attributes:\n",
             "    created_at:                 2025-06-22T21:21:20.948897\n",
             "    arviz_version:              0.12.0\n",
             "    inference_library:          pymc3\n",
             "    inference_library_version:  3.11.2

      \n", "
    \n", "
    \n", "
  • \n", " \n", "
  • \n", " \n", " \n", "
    \n", "
    \n", "
      \n", "
      \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
      <xarray.Dataset>\n",
             "Dimensions:           (chain: 1, draw: 10, gamma_phi_dim_0: 18,\n",
             "                       gamma_phi_dim_1: 32, gamma_etaC_dim_0: 6,\n",
             "                       gamma_etaC_dim_1: 3, gamma_etaT_dim_0: 6,\n",
             "                       gamma_etaT_dim_1: 3, corpus_dim_0: 100, corpus_dim_1: 1)\n",
             "Coordinates:\n",
             "  * chain             (chain) int64 0\n",
             "  * draw              (draw) int64 0 1 2 3 4 5 6 7 8 9\n",
             "  * gamma_phi_dim_0   (gamma_phi_dim_0) int64 0 1 2 3 4 5 ... 12 13 14 15 16 17\n",
             "  * gamma_phi_dim_1   (gamma_phi_dim_1) int64 0 1 2 3 4 5 ... 26 27 28 29 30 31\n",
             "  * gamma_etaC_dim_0  (gamma_etaC_dim_0) int64 0 1 2 3 4 5\n",
             "  * gamma_etaC_dim_1  (gamma_etaC_dim_1) int64 0 1 2\n",
             "  * gamma_etaT_dim_0  (gamma_etaT_dim_0) int64 0 1 2 3 4 5\n",
             "  * gamma_etaT_dim_1  (gamma_etaT_dim_1) int64 0 1 2\n",
             "  * corpus_dim_0      (corpus_dim_0) int64 0 1 2 3 4 5 6 ... 94 95 96 97 98 99\n",
             "  * corpus_dim_1      (corpus_dim_1) int64 0\n",
             "Data variables:\n",
             "    gamma_phi         (chain, draw, gamma_phi_dim_0, gamma_phi_dim_1) float64 ...\n",
             "    gamma_etaC        (chain, draw, gamma_etaC_dim_0, gamma_etaC_dim_1) float64 ...\n",
             "    gamma_etaT        (chain, draw, gamma_etaT_dim_0, gamma_etaT_dim_1) float64 ...\n",
             "    corpus            (chain, draw, corpus_dim_0, corpus_dim_1) float64 -1.67...\n",
             "Attributes:\n",
             "    created_at:                 2025-06-22T21:21:21.335895\n",
             "    arviz_version:              0.12.0\n",
             "    inference_library:          pymc3\n",
             "    inference_library_version:  3.11.2

      \n", "
    \n", "
    \n", "
  • \n", " \n", "
  • \n", " \n", " \n", "
    \n", "
    \n", "
      \n", "
      \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
      <xarray.Dataset>\n",
             "Dimensions:           (gamma_phi_dim_0: 18, gamma_phi_dim_1: 32,\n",
             "                       gamma_etaC_dim_0: 6, gamma_etaC_dim_1: 3,\n",
             "                       gamma_etaT_dim_0: 6, gamma_etaT_dim_1: 3,\n",
             "                       corpus_dim_0: 100, corpus_dim_1: 96)\n",
             "Coordinates:\n",
             "  * gamma_phi_dim_0   (gamma_phi_dim_0) int64 0 1 2 3 4 5 ... 12 13 14 15 16 17\n",
             "  * gamma_phi_dim_1   (gamma_phi_dim_1) int64 0 1 2 3 4 5 ... 26 27 28 29 30 31\n",
             "  * gamma_etaC_dim_0  (gamma_etaC_dim_0) int64 0 1 2 3 4 5\n",
             "  * gamma_etaC_dim_1  (gamma_etaC_dim_1) int64 0 1 2\n",
             "  * gamma_etaT_dim_0  (gamma_etaT_dim_0) int64 0 1 2 3 4 5\n",
             "  * gamma_etaT_dim_1  (gamma_etaT_dim_1) int64 0 1 2\n",
             "  * corpus_dim_0      (corpus_dim_0) int64 0 1 2 3 4 5 6 ... 94 95 96 97 98 99\n",
             "  * corpus_dim_1      (corpus_dim_1) int64 0 1 2 3 4 5 6 ... 90 91 92 93 94 95\n",
             "Data variables:\n",
             "    gamma_phi         (gamma_phi_dim_0, gamma_phi_dim_1) float64 0.06077 ... ...\n",
             "    gamma_etaC        (gamma_etaC_dim_0, gamma_etaC_dim_1) float64 0.311 ... ...\n",
             "    gamma_etaT        (gamma_etaT_dim_0, gamma_etaT_dim_1) float64 0.3554 ......\n",
             "    corpus            (corpus_dim_0, corpus_dim_1) int32 364 423 ... 3261 145404\n",
             "Attributes:\n",
             "    created_at:                 2025-06-22T21:21:21.338361\n",
             "    arviz_version:              0.12.0\n",
             "    inference_library:          pymc3\n",
             "    inference_library_version:  3.11.2

      \n", "
    \n", "
    \n", "
  • \n", " \n", "
  • \n", " \n", " \n", "
    \n", "
    \n", "
      \n", "
      \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
      <xarray.Dataset>\n",
             "Dimensions:     (data_dim_0: 100, data_dim_1: 96)\n",
             "Coordinates:\n",
             "  * data_dim_0  (data_dim_0) int64 0 1 2 3 4 5 6 7 8 ... 92 93 94 95 96 97 98 99\n",
             "  * data_dim_1  (data_dim_1) int64 0 1 2 3 4 5 6 7 8 ... 88 89 90 91 92 93 94 95\n",
             "Data variables:\n",
             "    data        (data_dim_0, data_dim_1) int32 364 423 31 ... 7264 3261 145404\n",
             "Attributes:\n",
             "    created_at:                 2025-06-22T21:21:21.339391\n",
             "    arviz_version:              0.12.0\n",
             "    inference_library:          pymc3\n",
             "    inference_library_version:  3.11.2

      \n", "
    \n", "
    \n", "
  • \n", " \n", "
\n", "
\n", " " ], "text/plain": [ "Inference data with groups:\n", "\t> posterior\n", "\t> log_likelihood\n", "\t> observed_data\n", "\t> constant_data" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "idata" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualizing uncertainty\n", "\n", "We've stepped through several ways to get posterior samples. For most purposes, the `get_estimated_activities_DataFrame()` method is probably suitable to work with. However, it returns the mean of samples from the posterior, so when we want to make use of uncertainty estimates we should use the array equivalent: `get_estimated_activities()` which can return objects with >2 dimensions. \n", "\n", "These objects are calculated as described above in \"Under the hood\" and dimensions correspond to `n_draws x n_genomes x n_signatures` \n", "\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "theta shape: (10, 100, 18)\n", "gamma shape: (10, 100, 6)\n" ] } ], "source": [ "theta, gamma = ht_lda.get_estimated_activities(n_draws = 10)\n", "\n", "print(\"theta shape: \", theta.shape)\n", "print(\"gamma shape: \", gamma.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's look at just the first three patients. We can view the damage signature activity and the uncertainty, taking the mean and standard deviation of our 10 samples. " ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pcawg_class
guid
0009b464-b376-4fbc-8a56-da538269a02fOvary-AdenoCA
003819bc-c415-4e76-887c-931d60ed39e7CNS-PiloAstro
0040b1b6-b07a-4b6e-90ef-133523eaf412Liver-HCC
\n", "
" ], "text/plain": [ " pcawg_class\n", "guid \n", "0009b464-b376-4fbc-8a56-da538269a02f Ovary-AdenoCA\n", "003819bc-c415-4e76-887c-931d60ed39e7 CNS-PiloAstro\n", "0040b1b6-b07a-4b6e-90ef-133523eaf412 Liver-HCC" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "patient_index = [0,1,2]\n", "display(pcawg.annotation.iloc[patient_index])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "lets compile our theta and gamma samples into dataframes, for easy visualization" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pcawg_classposterior_sampleDamage signaturetheta
0Ovary-AdenoCA0D10.022982
1CNS-PiloAstro0D10.030673
2Liver-HCC0D10.024449
3Ovary-AdenoCA1D10.015198
4CNS-PiloAstro1D10.047383
\n", "
" ], "text/plain": [ " pcawg_class posterior_sample Damage signature theta\n", "0 Ovary-AdenoCA 0 D1 0.022982\n", "1 CNS-PiloAstro 0 D1 0.030673\n", "2 Liver-HCC 0 D1 0.024449\n", "3 Ovary-AdenoCA 1 D1 0.015198\n", "4 CNS-PiloAstro 1 D1 0.047383" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "theta_df = pd.concat([pd.DataFrame(theta[draw,patient_index,:], \n", " index = pcawg.annotation.iloc[patient_index].index, \n", " columns = [\"D\"+str(i+1) for i in range(ht_lda.n_damage_sigs)]).assign(posterior_sample = draw) for draw in range(10)])\n", "\n", "theta_df['pcawg_class'] = pcawg.annotation.iloc[patient_index].pcawg_class\n", "theta_df = theta_df.melt(id_vars = ['pcawg_class', 'posterior_sample'], var_name = 'Damage signature', value_name = 'theta')\n", "theta_df.head()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pcawg_classposterior_sampleMisrepair signaturegamma
0Ovary-AdenoCA0M10.095974
1CNS-PiloAstro0M10.133630
2Liver-HCC0M10.037630
3Ovary-AdenoCA1M10.108157
4CNS-PiloAstro1M10.144083
\n", "
" ], "text/plain": [ " pcawg_class posterior_sample Misrepair signature gamma\n", "0 Ovary-AdenoCA 0 M1 0.095974\n", "1 CNS-PiloAstro 0 M1 0.133630\n", "2 Liver-HCC 0 M1 0.037630\n", "3 Ovary-AdenoCA 1 M1 0.108157\n", "4 CNS-PiloAstro 1 M1 0.144083" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gamma_df = pd.concat([pd.DataFrame(gamma[draw,patient_index,:], \n", " index = pcawg.annotation.iloc[patient_index].index, \n", " columns = [\"M\"+str(i+1) for i in range(ht_lda.n_misrepair_sigs)]).assign(posterior_sample = draw) for draw in range(10)])\n", "gamma_df['pcawg_class'] = pcawg.annotation.iloc[patient_index].pcawg_class\n", "gamma_df = gamma_df.melt(id_vars = ['pcawg_class', 'posterior_sample'], var_name = 'Misrepair signature', value_name = 'gamma')\n", "gamma_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now plot the activities and uncertainty!" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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i5o1a6by5ctn+RoDAAAABYYJAAAAcDAbNmwweXt7m/bt22eKiooynT171vT111+bmjVrZvL39zedO3fOdOTIEZO3t7fptddes1r2/fffN3l7e5uCg4NNJpPJ9P3335u8vb1Nf/75Z4bbi4qKMnl7e5vmzJmT5rmnnnrK9Mgjj5hu3rxpmWc0Gk1PPPGE6eGHH04Tc//+/U1JSUnp7k9ERIRle/Xq1TM988wzpuTkZEu7Tz/91OTt7W1av369Zd6gQYNM3t7eps8//9yWl87meB999FHTc889l+m6pkyZYvL29k73udtfrzlz5pi8vb1Nb7zxhmVeUlKS6YEHHjD5+PiYFi1aZJkfExNj8vf3NwUGBlq1TR1zSrtWrVqZXn31Vcu83Hiv0pPyOZk/f77V/BdffNHk4+NjCgsLs8wbNGiQqXv37pmuz9a2KdtduXKlZV5cXFyads8884zpoYcespr34IMPmry9vU2//fabZd6ePXtM3t7eJn9/f1NkZKRl/po1a0ze3t6mX375JdPtbN261eTt7W369ddfLfOef/55U4MGDUznzp2zzDt16pTpvvvus/p8nD592lS3bl3TggULrNb5zz//mO67774082/XuHFj05QpUzJtExgYaHrwwQctj7/99luTt7e3acWKFZZ5ycnJpiFDhpi8vb1NGzZssFrW29vbFBQUZLXOnj17mnr16mU17/bXJiEhwfTII4+YhgwZYjW/YcOGVp/jjOJMkfI9Sc3b29vk6+trOn78uNX8SZMmmVq3bm2Kjo62mj9u3DhT48aN033/MtsHkynt5+jq1aumRo0amfr27WuKj4+3ams0Gi3Tzz33XLr7ExERkeZ1fuKJJ9K8nn/88YfJ29vbtHHjRsu821+jzL7bL730kqlNmzZWx8vDhw+n2TYAAADgCOjqEwAAAA5r6NChli4zx40bp2LFiikoKEjly5fX7t27JUlPP/201TLPPPOMJFmeL1GihCTpxx9/VGJiYra2f+XKFf3yyy/q2rWrrl+/rujoaEVHR+vy5ctq06aNTp06laaLuX79+mU5nt++ffuUmJioIUOGWO6+kszjGBYvXtwSewpXV1f17t07V+MtWbKkjh8/rlOnTtn4atjm8ccft0w7Ozurfv36MplMVvNLliypGjVqKCIiwqqtq6urJPNdXFeuXFFSUpLq16+fbhd/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Xz/17dtXtWvXVkxMjA4fPqzg4GAdOHAgw2Vt/RwVL15cr776ql5//XU9/vjjeuSRR1SyZEkdPXpU8fHxmj59umU/t23bpmnTpsnPz09FixZVhw4dMty+h4eHmjdvruXLlys2NlbdunXLcn8z+26n6NmzpyUmuvkEAACAo6LwBwAAgHvWO++8oypVqmjjxo3asWOHypYtq+eff96q68JmzZrpr7/+0rZt23Tp0iWVKFFC/v7++vDDD6262XznnXc0depUTZs2TYmJiQoICJC3t7dq166tDRs2KCgoSBs3btSVK1fk7u6u++67T6NGjcpx7C+++KLc3d316aefatq0aSpVqpT69eunl156SS4uLjler63xDh48WLt27dLevXuVkJCgSpUqaezYsVaFmYcffliDBw/W119/rc2bN8tkMuVZ4a937966dOmS1q5dq59//lm1a9fWBx98oO3bt6cpcOTFe+Xk5KQFCxZozpw52rZtm7788ktVrlxZEyZM0DPPPHNH+3bu3DlNmDBBkvkOsXLlyqlhw4aaPHmyWrdubdW2Zs2amjNnjmbNmqXp06erbNmy6t+/v9zd3TVp0qQ7iuN2H330kaZOnarPPvtMJpNJrVu31scff5xmjMT69evr448/1owZMzR79mxVrFhRo0eP1okTJyxdoaZ47rnnVL16da1YsULz5s2TJFWoUEGtW7fOtFDk5uam/v37a+/evfruu+9kMplUtWpVSzE3IynjQL777rvauHGjnJyc1KlTJ40aNUr9+/fP0ZibLVu21LvvvquPP/5Y7733nqpUqaKXX35ZkZGRaQp/EydO1JtvvqlZs2YpPj5evXr1UoMGDVSmTBkFBQXp/fff1wcffKAqVaropZdeUlhYmM2Fv7Jly+qLL77QvHnz9P333+vzzz9X6dKlVbt27SzHy8vO56hv377y8PDQ4sWLNX/+fBUqVEg1a9bU0KFDLW0GDBigI0eO6Msvv9SKFStUuXLlTN9PyTxm4759+1SsWDGb72LO6LudokePHpZjt7+/v03rBAAAAAoagykno64DAAAAAHAHXnjhBf3777/67rvv7B1KGjt27NCoUaP02WefWcZPRMEXHR2ttm3b6oUXXrijCy8AAACA/Iwx/gAAAAAAeSo+Pt7q8alTp/TTTz+pWbNmdorolttjS05O1qpVq1S8eHFLd7Vw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e+89RUdHa+rUqZo6daqmTZtmabd8+XKNHj1aI0aM0LfffqvJkyeradOmqlmzpm7cuKFhw4apUaNGWr9+vaKiovT6669r6tSpev/9961e5/Lly6fZj2LFilk9/vLLL9WuXTuVKFHCciKuR48eGb4OAID8j7yoYOVFtvy9Ll68uEaOHKn58+erV69eVkXBFGXLltUvv/yiAQMG3PHV74ULF1ZiYmKW7YxGo1544QUVLVpUq1atUnJysqZMmaJx48Zp1apVlnZZ5VHffvutVqxYoZkzZ6pOnTq6dOmSjh49KulWF1/9+vWzfIZTxMfH6+OPP9Y777yj0qVLy8PDQy+99JLCwsK0YMECFS9eXB988IGee+45ff311xneLQkAuPeQL+X/fCm7evTooTFjxig2NtaSS/3888+Kj4+33C23aNEibd68WVOmTFH16tX166+/6pVXXpG7u7vl/ZCkjz76SIGBgfLy8rLqMSm7tm/frsTERA0fPjzd51PWvWXLFtWoUSPdu/oMBoNKlCiR4xiAew2FP8CBVKxYUZMmTZLBYFDNmjV17NgxrVixQv369dPJkyf1zTffaPny5WrVqpUkWXUn6eLiotGjR1see3l56ffff9f27dvVrVs3GQwGNW3a1JKwHThwQL1799b69esVGhqqqlWr6tChQ5Y/4mvXrlWNGjUUGBgoSZZ4Fi5caNO+LFmyRPXr19fkyZMt8+rUqZNh+8cff9wq9tdee02PP/64JdE5c+aM6tatKz8/P0lSlSpVLO3Pnj2ratWqqXHjxjIYDJaTLxnp0KGDGjRokGmb9E5eSea76q5evaqaNWum+3ytWrVkMpkUHh4uf39/PfDAA9qyZYul8Pftt9+qTJkylqucfH195evra1l+7Nix2rFjh3bt2qVBgwZZ5rdo0ULPPPOMVXxTp0616mLqyy+/VO/evWUwGDLcrw0bNuiBBx5QqVKlJElt2rTRl19+qRdffFGS9Pnnn6tq1aqaOHGipFvve0riLJkTzB49emjo0KGSpOrVq+u1117T4MGDNXnyZEsXmw888IAGDhwoSXr22We1YsUK7d+/XzVr1tTWrVuVkJCg6dOnW076vfnmmxoxYoRefvllGQwGxcTEZPg6p2Y0GrVx40a9/vrrkmTpYz4iIiJPu1wFAOQt8qJbsefXvOjy5cs2/71OMWDAAH3yySdavny55erw1F599VWNHj1arVu3Vu3atdWoUSM99NBDateunc3bSE5O1tatW/XPP//YNF5OcHCwjh07pp07d6pixYqSpBkzZqh79+76888/5e/vLynrPOrs2bMqW7asWrVqJRcXF1WqVMmybOnSpeXs7KxixYqluXgsMTFRkydPtuSEp06d0q5du/T555/r/vvvlyR9+OGHat++vXbs2KGuXbva/FoAABwb+dKt2PNrvpRdbdq0UZEiRfT999+rZ8+ekqStW7eqQ4cOKl68uBISErRo0SItX75cjRo1kmTe/4MHD2rt2rVWhb+UnCoz165ds6wnI6dOnVLx4sVVrly5TNuFhYWpRo0aNuwlgKxQ+AMcSIMGDayKNg0bNtTy5cuVnJysI0eOyNnZWU2bNs1w+dWrV2vDhg06c+aMbt68qcTERKuiUtOmTS1dK/36668aN26cTp06pQMHDigmJkZJSUmWkwsnT55U/fr1rdafcuLCFkeOHFGXLl1sbv/3338rKChIR48eVUxMjKVrirNnz6p27drq37+/Ro8erf/7v/9T69at1bFjR0usvXr10jPPPKMuXbqobdu2at++vdq0aZPhtooXL67ixYvbHNud6NGjh9544w1NnjxZrq6u2rJli7p3724ZtyU2NlZBQUH68ccfdfHiRSUnJys+Pl5nzpyxWs/t70XhwoX16KOPasOGDerWrZsOHz6s48ePa8GCBZKk4cOHW7pxqFSpkr7++mslJydr48aNeu211yzrefTRRzVjxgyNGjVKTk5OCg0NTfM+N2zY0Orx0aNH9c8//2jLli2WeSaTSUajUadPn1atWrUkydKFlWS+sqts2bKWbjdCQ0Pl4+NjdaX//fffL6PRqJMnT2YrUdy7d6/i4uIsJwTd3d3VunVrbdiwIU33GACAgoO8KP/nRam7ErOVq6urRo8eralTp1p1DZaidu3a2rp1q/7++2/99ttvCgkJ0ciRI9WrVy+9++67aa64T311/eeff67169crMTFRTk5OGjp0aLrbuF1oaKgqVKhgKfqlxFGyZEmdOHFC/v7+NuVRXbp00cqVK9WxY0e1bdtW7dq104MPPpjleDouLi5WeVNoaKgKFSpkdYKxTJkyqlGjhkJDQ7PcHwDAvYN8Kf/nS9lVqFAhde3aVVu2bFHPnj1148YN7dy5UzNnzpRkLq7FxcVZXRwumS8kqlu3rtW8lKKnJKviXo8ePSzDxxQrVkwbN25ME8fDDz9smTaZTJleZJ66HYDcQeEPuEe4ubll+vzXX3+t6dOnKzAwUI0aNVKxYsW0dOlS/fHHH5Y2zZo103vvvadTp07p33//VePGjXXixAkdOHBAV69eVf369VWkSJG7Em9qKd0+tmnTRh9++KHKlCmjs2fPatiwYZbumdq1a6cffvhBu3fv1t69ezV06FANHDhQgYGBqlevnnbu3KmffvpJ+/bt09ixY9WqVSvNmTMn3e3dSRcN7u7uKlmyZIYnXUJDQ2UwGFS1alVJ5qvCXn/9df3444/y8/NTSEiIZXw/SZo+fbr27dunwMBAVa1aVW5ubho9enSabqnSe1/69u2rnj176ty5c/ryyy/VokULy1Vq7777rqULi5STTT///LPOnz9v1R+/ZL4qPjg4OMurwFLcuHFDTz75pAYPHpzmudQnzG4/yWUwGGxOAlNe5xMnTmTZdv369bpy5YrVyTGj0ah//vlHo0ePthRZAQCOg7wof+VFtvy9Tu3RRx/V0qVLtWDBgnSvsHdycpK/v7/8/f01dOhQffXVV5owYYJGjBiR5or71FfX9+jRQyNGjLCM9ZebOYAteVTFihW1fft27du3T/v27dOUKVO0dOlSrVq1KtPuOd3c3Gw6mQYAQHaQL+WPfCknevToocGDBysqKkp79+5V4cKF1bZtW8u+S+bemG6/yzBlKJgUqd+blPEBJVkVMZ2cnFStWrVM46lRo4auXbumCxcuZHrXX/Xq1bOdFwJIH4U/wIH8+eefVo//+OMPVatWTc7OzvL29pbRaNSvv/5q6aIhtd9++02NGjWydK0omcchSc3Hx0elSpXSggULVLduXRUrVkzNmzfXkiVLdPXqVavuAGrUqKHdu3dbLf/XX3/ZvC8+Pj4KDg626jYiIydOnNCVK1f08ssvWwpHf//9d5p27u7u6tWrl3r16qU1a9ZoxowZli4kihcvrm7duqlbt27q3Lmzhg8fritXrqh06dJp1nMnXTQ4OTlZrrwaPXq0VVdN8fHx+uyzz9SmTRvLdgsXLqyHH35YW7ZssXR5UK9ePcsyhw4dUq9evdSpUydJ5jsAIyMjM40thY+Pj+rXr69169Zp69ateuONNzKNf/369erevbtGjBhhNX/hwoVav369WrdurVq1amnXrl1Wz6dO+iXpvvvu07///ptlYpiZWrVqaePGjbpx44blrr/ffvtNTk5OqlGjhpycnNStWzdt3rxZo0aNSrM/sbGxKly4sK5du6adO3fqf//7n2rXrm153mg0qn///vr555/1wAMP5DhOAID9kBcVjLzIlr/Xt18M5OTkpPHjxysgIMCmO/JS/sbHxcXJy8srwyvuixcvnqP8pFatWjp37pzOnj1rec3//fdfXb161dKTgS15lGQ+admhQwd16NBBAwYMUNeuXXXs2DHVq1dPLi4uMhqNNsWTlJSkP/74w3JnwuXLl3Xy5EmrfAcAAPKl/J8v5cT999+vChUqaNu2bfrpp5/UpUsXy0VEtWrVkqurq86cOWP1+mflTs7hdO7cWR9++KGWLFmiSZMmpXn+6tWrKlmypHr06KFx48Zpx44dacb5M5lMun79OuP8ATbiNgbAgZw5c0bTpk3TiRMntHXrVn366acaMmSIJHNf5L169dKkSZO0Y8cORUREaP/+/dq2bZsk8x/wv//+W3v27NHJkyc1a9asNAmWwWBQkyZNtGXLFkty4OPjo4SEBAUHB1t1//DEE0/o5MmT+uCDD3Ty5Elt27bNcuu/LVckP/fcc/rrr780efJkHT16VKGhofrss88UHR2dpm2lSpXk4uKiVatWKSIiQjt37tT8+fOt2syePVs7duxQWFiYjh8/rh9//NFyImb58uXaunWrQkNDdfLkSW3fvl2enp4ZDlycclIos3+ZXWk2btw4lS1bVs8884x2796ts2fP6tdff9WwYcOUlJSU5iqwHj166Mcff9SGDRvUo0cPq+eqVaum77//XkeOHNHRo0c1fvx4m04Ipejbt68WL14sk8lkKR6mJzo6Wj/88IN69uwpb29vq3+PPfaYduzYoStXrujJJ5/UqVOnNH36dJ04cUJbtmxJ0+XDs88+q0OHDuntt9/WkSNHdOrUKe3YscPSTYQtevToIVdXV02cOFHHjh3TL7/8oqlTp+qxxx5T2bJlJZlf5woVKqhfv37atGmT/v33X506dUrr169Xr169dOPGDX311VcqXbq0unbtarVPvr6+ateundavX29zTACA/IW8qODkRVn9vU5P+/bt1aBBA61du9Zq/ujRo7VixQr98ccfioyM1P79+/X222+revXq2RpLMDtatWolb29vvfzyyzp8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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "g = sns.FacetGrid(theta_df, col='pcawg_class', col_wrap=3, height=4, aspect=1.5)\n", "g.map_dataframe(sns.barplot, x='Damage signature', y='theta', color = '#EE30A7')\n", "g.fig.suptitle('Posterior estimate of Damage signature activity', y=1.02)\n", "g.set_axis_labels('Damage signature', 'Theta')\n", "for ax in g.axes.flat:\n", " ax.text(2.5, 0.05, 'Active threshold = 0.05', ha='center', va='bottom', fontsize=10, color='red')\n", " ax.axhline(y=0.05, color='red', linestyle='--', alpha=0.7)\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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g9q2bavvvvtOmzZtUkpKSo6G+bzbcTp16qS///5bH330kezt7dW+ffscxQMAAAA8CujxBwAAgH8Fb29vdenSRWvWrFFCQoLq1q2rP/74Q8HBwWrZsqW5t1JwcLBWrVqlli1bqkKFCrp27ZrWrl0rZ2dncxLDyclJVatW1bZt21SpUiWVKFFCTzzxhDw9PfXuu++qd+/e6tChg3r06CEPDw9FR0frt99+08WLF7Vp06Z7jr1kyZJ69dVXFRQUpJdfflktWrTQmTNntHLlSvn6+qpjx465vi45jbd9+/aqV6+eqlevrhIlSuiPP/7Qjh071KdPH3Nd1atXlyS9//77aty48QP9Qr158+b69ttvNXToUDVv3lznzp3T6tWrVbVqVV2/ft1c7kG9Vy1atFD9+vX16aefKjIyUl5eXvr555+1e/duvfjii3k2TGjRokU1fPjwe94vJ5/j7NzrtUlOTlb//v3Vrl0782ezdu3aeuaZZyRJNWvWVPHixTVu3Dj17dtXdnZ2+vrrrx/IUJGzZ89WaGiomjVrpnLlyikmJkYrV65UmTJlVLt27Sz3GzVqlF577TX16tVLXbt2VUJCglasWCFPT0+LZGBOOTs7q27dulq4cKGSk5Pl7u6un3/+OdNejum/O59++qkCAgJUsGBBPf300ypcuLC6d++u+fPn66233pKPj49CQ0N15syZHMdRoUIFvf7665o2bZoiIyPVsmVLFSlSROfOndOuXbvUo0cPDRw4MMv9mzdvrq+//lrOzs6qWrWqfvvtN+3bt08lSpSwKDdw4EDt2LFDI0eOVLdu3VS9enVdvnxZe/bs0eTJk+Xt7a0KFSqoWLFiWr16tYoUKaLChQvLz8/Poifzndq1a6dly5Zp5syZ8vT0tOixnZW73YuaNWumEiVKaPv27WratKlcXV3vWicAAADwqCDxBwAAgH+N999/X+XLl1dwcLB27dolNzc3vfrqqxbD8NWrV09//PGHtm7dqujoaBUtWlR+fn765JNPLL6cfv/99zVlyhQFBgYqOTlZw4YNk6enp6pWrar169crKChIwcHBio+PV8mSJfXkk09q6NChuY59+PDhKlmypJYvX67AwEAVL15cPXr00BtvvKGCBQvmut6cxtu3b1/t2bNHP//8s5KSklS2bFm9/vrrFgmD1q1bq2/fvvrmm2+0adMmGY3G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3LlzM33C3mAwyM/PT35+furfv7++/vprjRkzRoMHD87wxP3tT9d36NBBgwcPNs/1l5dtgJy0ox577DFt375d+/bt0759+zR58mQtWrRIy5Yty3Z4Ticnpxx9mQYAwL2gvZQ/2ku50aFDB/Xt21cxMTH6+eef5ejoqCZNmpjPXTKNxnRnL8P0qWDS3f7epM8PKMkiiWkwGFSxYsVs46lcubKuXLmif/75J9tef5UqVbrndiGAzJH4A2zIkSNHLF7//vvvqlixouzt7eXp6am0tDT98ssv5iEabvfrr7+qZs2a5qEVJdM8JLfz8vJS8eLFNXfuXFWrVk1FihRR/fr1tXDhQiUkJFgMB1C5cmXt3bvXYv8//vgjx+fi5eWlkJAQi2EjsnL69GnFx8frzTffNCeO/vzzzwzlSpYsqS5duqhLly5avXq1PvroI/MQEs7OzgoICFBAQIDatGmjl19+WfHx8SpRokSGeu5niAaDwWB+8mrEiBEWQzXduHFDK1euVOPGjc3HdXR0VOvWrbV582bzkAfVq1c373P48GF16dJFrVq1kmTqARgZGZltbOm8vLzk4+OjtWvXasuWLXrnnXeyjX/dunVq3769Bg8ebLH+888/17p169SoUSNVqVJFe/bssdh+e6Nfkp588kn9/fffd20YZqdKlSoKDg7W9evXzb3+fv31VxkMBlWuXFkGg0EBAQHatGmThg4dmuF8rl27JkdHR125ckW7d+/Wp59+qqpVq5q3p6WlqVevXvrpp5/UtGnTXMcJALAe2kWPRrsoJ3+v73wYyGAwaPTo0Ro2bFiOeuSl/41PTEyUh4dHlk/cOzs756p9UqVKFV28eFEXLlwwX/O///5bCQkJ5pEMctKOkkxfWrZo0UItWrRQ79691a5dO504cULVq1dXwYIFlZaWlqN4UlJS9Pvvv5t7JsTFxenMmTMW7R0AAGgv5f/2Um7UqlVLZcqU0datW/XDDz+obdu25oeIqlSpIgcHB50/f97i+t/N/XyH06ZNG33yySdauHChJkyYkGF7QkKCihUrpg4dOmjUqFHatWtXhnn+jEajrl69yjx/QA7RjQGwIefPn1dgYKBOnz6tLVu2aPny5erXr58k01jkXbp00YQJE7Rr1y5FRETowIED2rp1qyTTH/A///xTP/74o86cOaPPPvssQwPLzs5OderU0ebNm82NAy8vLyUlJSkkJMRi+IeePXvqzJkz+vjjj3XmzBlt3brV3PU/J08kv/LKK/rjjz80adIkHT9+XKdOndLKlSsVGxuboWzZsmVVsGBBLVu2TBEREdq9e7fmzJljUWbGjBnatWuXwsLCdPLkSX3//ffmL2KWLFmiLVu26NSpUzpz5oy2b9+uUqVKZTlxcfqXQtn9ZPek2ahRo+Tm5qaXXnpJe/fu1YULF/TLL79o4MCBSklJyfAUWIcOHfT9999r/fr16tChg8W2ihUraufOnTp27JiOHz+u0aNH5+gLoXTdu3fX/PnzZTQazcnDzMTGxuq7775T586d5enpafHTqVMn7dq1S/Hx8Xr++ed19uxZTZ06VadPn9bmzZszDPkwaNAgHT58WO+9956OHTums2fPateuXeZhInKiQ4cOcnBw0Lhx43TixAnt379fU6ZMUadOneTm5ibJdJ3LlCmjHj16aOPGjfr777919uxZrVu3Tl26dNH169f19ddfq0SJEmrXrp3FOXl7e6tZs2Zat25djmMCAOQvtIsenXbR3f5eZ6Z58+aqUaOG1qxZY7F+xIgR+uKLL/T7778rMjJSBw4c0HvvvadKlSrd01yC98Lf31+enp568803dfToUR05ckRjxoxRvXr15Ovrm+N21IYNG/TVV1/pxIkTioiI0KZNm+Tk5KSyZctKksqVK6dffvlFUVFRmb736SpVqqRnnnlG77zzjkJDQ3X8+HH95z//kbu7u5555pkHcg0AAI8m2kuPRntJMj0sfuzYMYufOxOtt3v22We1evVq7du3z+K7JGdnZ7300ksKDAxUcHCwwsPDdfToUS1btizTITvzwmOPPabx48fryy+/1IQJE3Tw4EFFRkbq0KFDmjhxovnat2vXTgEBARo9erQ+//xz/fHHH4qMjNR3332n/v3768CBAw8kPsAW0eMPsCGdO3fWjRs31L17d9nb26tfv37q2bOnefukSZM0ffp0TZo0SfHx8SpbtqxeffVVSdLzzz+vY8eOadSoUbKzs1P79u3Vu3dv/fDDDxbHqFu3rnbt2mVusBkMBtWpU0d79+41P1EsmSYGnjFjhqZOnaovv/xSTz31lAYPHmyeq+5uKleurMWLF2v69Onq3r27nJyc5Ofnp2effTZD2ZIlS+rDDz/U9OnTtWzZMlWvXl1jx47VkCFDzGUK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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "g = sns.FacetGrid(gamma_df, col='pcawg_class', col_wrap=3, height=4, aspect=1.5)\n", "g.map_dataframe(sns.barplot, x='Misrepair signature', y='gamma', color = '#458B74')\n", "g.fig.suptitle('Posterior estimate of Misrepair signature activity', y=1.02)\n", "g.set_axis_labels('Misrepair signature', 'Gamma')\n", "for ax in g.axes.flat:\n", " ax.text(0.5, 0.05, 'Active threshold = 0.05', ha='center', va='bottom', fontsize=10, color='red')\n", " ax.axhline(y=0.05, color='red', linestyle='--', alpha=0.7)\n", "plt.tight_layout()\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "damuta-dev", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.8.20" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }