{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Motif simulation explained" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import seqlogo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook intends to illustrate the generation of motifs and the effect of the choice of Dirichlet parameters. \n", "\n", "Each position (letter) of a motif is sampled from a Dirichlet distribution. The Dirichlet distribution is initialized with 4 alpha parameters corresponding to A, C, G, and T bases." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "l_motif = 5" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def get_ic_logo(ppm_np: np.array):\n", " ppm = seqlogo.Ppm(ppm_np)\n", " print(f'The motif ppm is: {ppm}')\n", " print(f'IC per letter: {' '.join([str(round(i,2)) for i in list(ppm.ic)])}')\n", " print(f'IC per motif: {sum(ppm.ic):.2f}')\n", " logo_plot = seqlogo.seqlogo(ppm, ic_scale = True, format = 'png', size = 'small')\n", " return logo_plot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Unconstrained information content through Dirichlet parameters\n", "\n", "This settings provide equal chances for each letter to be the main selection, but does not give very strong weight to any of them. This results in varying information content of any position of the motif." ] }, { "cell_type": "code", "execution_count": 4, "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", "
ACGT
00.0821970.5272520.2306410.159911
10.0703750.0703630.0248260.834435
20.1619620.2169720.0036650.617401
30.7356380.0982900.0826380.083434
40.1798980.3689310.2804630.170708
\n", "
" ], "text/plain": [ " A C G T\n", "0 0.082197 0.527252 0.230641 0.159911\n", "1 0.070375 0.070363 0.024826 0.834435\n", "2 0.161962 0.216972 0.003665 0.617401\n", "3 0.735638 0.098290 0.082638 0.083434\n", "4 0.179898 0.368931 0.280463 0.170708" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The motif ppm is: \n", "IC per letter: 0.31 1.11 0.64 0.75 0.07\n", "IC per motif: 2.88\n" ] }, { "data": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.seed(42)\n", "unconstrained = [1, 1, 1, 1]\n", "motif_from_unconstr_prior = np.random.dirichlet(unconstrained, l_motif)\n", "logo_plot = get_ic_logo(motif_from_unconstr_prior)\n", "logo_plot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Constrained low information content\n", "\n", "When high (>1) alpha values are provided, the Dirichlet distribution will be concentrated. This means that in the motif, each letter has about the same probability for each position. Thus, the motif has low information content." ] }, { "cell_type": "code", "execution_count": 5, "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", "
ACGT
00.2715760.1840400.3259020.218483
10.3345260.1977650.2040220.263687
20.3271300.2692440.1961210.207505
30.3723650.1716530.1991640.256818
40.2384190.2936960.1511220.316763
\n", "
" ], "text/plain": [ " A C G T\n", "0 0.271576 0.184040 0.325902 0.218483\n", "1 0.334526 0.197765 0.204022 0.263687\n", "2 0.327130 0.269244 0.196121 0.207505\n", "3 0.372365 0.171653 0.199164 0.256818\n", "4 0.238419 0.293696 0.151122 0.316763" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The motif ppm is: \n", "IC per letter: 0.03 0.03 0.03 0.07 0.05\n", "IC per motif: 0.21\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAFtCAIAAABnVuHwAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAACB0RVh0U29mdHdhcmUAR1BMIEdob3N0c2NyaXB0IDEwLjA1LjHGEMIMAAAOB0lEQVR4nO3dTXLbZp7A4RdTqXS6pqdqoNWkNynDc4EJVLmAqSNQvoGOEPAIIm9g+gZibkD6BoZ3s5oQqWzi3gzRVZ0pu7PhLGDTMkUx+iT/kZ5nRRMkAerjx/d9QVrZcrlMAAH8y74PAOADPQKi0CMgitv2aDKZ9Pv9fr8/mUzWNtV13W2q6/qWewEegy9uc+e6rquqmkwmeZ73er2iKMqy7Da1bdvv98fjcUqp3+83TXNHBww8WLcaH52dnfX7/bIsi6Lo9/tnZ2erTd24qdfrdZ2azWZ3cbTAQ3ar8dFwOOwutG07mUy60VBnPp+vLpdlWdf1dDpdm7gtFovRaNTr9W5zDMCDcasedSaTyenp6WAw2FKWxWJxfHx8dHR0/sqXL19Op1M9Ajq37dHJyUk3OCqKYsvNDg8PV0tLK9Pp9JZ7Bx6SW60fjcfjy2J0fHy8mp1NJpOLMQJYc6sezefzH374IfuoqqqUUpZl3ZpRURQnJyfdKf/toyeAlFJ2r59f64ZIlw2Oun6tFsWBR+4O1rO3ME0Drs7nRYAo9AiIQo+AKPQIiEKPgCj0CIhCj4Ao9AiIQo+AKPQIiEKPgCj0CIhCj4Ao9AiIQo+AKPQIiEKPgCj0CIhCj4Ao9AiIQo+AKPQIiEKPgCj0CIhCj4Ao9AiIQo+AKL7Y/S7H4/HZ2VlK6ccff3z+/PnuDwCIaQ896vV6RVGklF6+fLn7vQNh7aFHRVF0PZpOp7vfOxCW9SMgCj0CotAjIAo9AqLQIyAKPQKi0CMgCj0CotAjIAo9AqLQIyAKPQKi0CMgCj0CotAjIAo9AqLQIyAKPQKi0CMgCj0CotAjIAo9AqLQIyAKPQKi0CMgCj0CotAjIAo9AqLQIyAKPQKi0CMgii92v8vxeHx2dpZS+vHHH58/f777AwBi2kOPer1eURQppZcvX+5+70BYe+hRURRdj6bT6e73DoRl/QiIQo+AKPQIiEKPgCj0CIhCj4Ao9AiIQo+AKPQIiEKPgCj0CIhCj4Ao9AiIQo+AKPQIiEKPgCj0CIhCj4Ao9AiIQo+AKPQIiEKPgCj0CIhCj4Ao9AiIQo+AKPQIiEKPgCj0CIhCj4Ao9AiIYg89qqoqy7Isy0aj0e73DoSVLZfLfe27qqqU0nA43NcBAKGYrwFR6BEQhR4BUegREIUeAVHoERCFHgFR6BEQhR4BUegREIUeAVHoERCFHgFR6BEQhR4BUegREIUeAVHoERCFHgFR6BEQhR4BUegREIUeAVHoERCFHgFR6BEQhR4BUegREIUeAVHoERCFHgFR6BEQxR56VFVVlmVZlo1Go93vHQgrWy6X+9p3VVUppeFwuK8DAEIxXwOi0CMgCj0CotAjIAo9AqLQIyAKPQKi0CMgCj0CotAjIAo9AqLQIyAKPQKi0CMgCj0CotAjIAo9AqLQIyAKPQKi0CMgCj0CotAjIIqr9qht27Zt7/lggEdtW48mk0mv1+suHBwcHBwcdH8xDeA+XNqjtm1PTk6Ojo5SSi9evDg9PZ3P5+PxuGma3R4h8Fhc2qO6roui6AZEr1696vf7RVGUZalHwD354rINRVE0TdO27Ww2e/LkSVEUKSUxAu7Pth6VZVmWZTdxSymVZZlS6laUAO7cpT1KKc1ms9lstmrQ8fFxFyaA+7Dt/FpVVb1ebzUgqqpqMplsnLJtPO9W13W/3+/3+3Vd390BAw/W5vFRNywajUbd+bWVFy9eFEXRrSWtbvnixYuLb01q27bf74/H45RSv9+38AT8rs09Oj09XbvQyfO8W0VamU6neZ5f7NFkMun3+93YqiiK2Wxm4QnYbtv4qNfrdRe2GA6Hs9lsLVsppfl8vrpclmVd16enp69evVq72ffff3/TIwcemt9Zz76r3SwWi4uP5t3ewHkbetRNrGazWZZlF7cul8sb7Obw8PBGhwc8IhvOr61O8y83ueLjHh8fr06rTSaTtVUngIu2ne/v3gmZ53mWZXmen5ycXOUj/t2oqizLoihOTk66U/7nT8kBbJRtGfJ0g5rBYNCdQevO61/rzUTdjS8bHHXrR8Ph8EZHDjw0l65n13XdNE3TNHmed9d0w5xrnbk3TQOubtt8rSiKVYxW19z/IQGP1KU9Kssyz/Pzk6nhcNi2rbc1AvdkQ49WH1tr23YwGGRZ1uv18jwfDAb7OELgsdiwfnR8fLz2sTWAHdjQI4vQwF74e0dAFHoERKFHQBR6BEShR0AUegREoUdAFHoERKFHQBR6BEShR0AUegREoUdAFHoERKFHQBR6BEShR0AUegREoUdAFHoERKFHQBR6BESxhx5VVZVlWZZlo9Fo93sHwsqWy+W+9l1VVfdnuPd1AEAo5mtAFHoERKFHQBR6BEShR0AUegREoUdAFHoERKFHQBR6BEShR0AUegREoUdAFHoERKFHQBR6BEShR0AUegREoUdAFHoERKFHQBR6BEShR0AUegREoUdAFHoERKFHQBR6BEShR0AUegREoUdAFHoERLGHHlVVlWVZlmWj0Wj3ewfCypbL5b72XVVVSmk4HO7rAIBQzNeAKPQIiEKPgCj0CIhCj4Ao9AiIQo+AKPQIiEKPgCj0CIhCj4Ao9AiIQo+AKPQIiEKPgCj0CIhCj4Ao9AiIQo+AKPQIiEKPgCj0CIhCj4Ao9AiIQo+AKPQIiEKPgCj0CIhCj4Ao9AiIQo+AKPQIiGIPPaqqKsuyLMtGo9Hu9w6ElS2Xy33tu6qqlNJwONzXAQChmK8BUegREIUeAVHoERCFHgFR6BEQhR4BUegREIUeAVHoERCFHgFR6BEQhR4BUegREIUeAVHoERCFHgFR6BEQhR4BUegREIUeAVHoERCFHgFR6BEQhR4BUegREIUeAVHoERCFHgFR6BEQhR4BUegREMUeelRVVZZlWZaNRqPd7x0IK1sul/vad1VVKaXhcLivAwBCMV8DotAjIAo9AqLQIyAKPQKi0CMgCj0CotAjIAo9AqLQIyAKPQKi0CMgCj0CotAjIAo9AqLQIyAKPQKi0CMgCj0CotAjIAo9AqL4Yt8HAH8M9S91+76dNtMb3Pdp/rTIi/LrMv9zfg+H9nDoEaybNbP2Xfv67ev2Xdu0Tf22/vv7v2+85bMnz/I/50VePM2fppTm7bxpm6Zt3rx9c9mDn7+LSK3RIx6v9l1bv62btuk60r5rX/30avtdVjU5/PrwYkeKvFhdXj3sWp427kKkOnrEo9B1of6lXrxf1L/Ul3Wh8+TfnxR5Uf61PPjqoPxrebM9FnlxPk/nTZvp2sjrGpFqmtQ0NzukdXWdBoNr32t6kxnrBmWZ8vXm+vu0PAJ3+Du8X5t+h29uNktHR9e+130W48GNj35t0q83+sn7j97dH8yNzJrZLR9hyyszt7XfMUVKa3W97IGbJrXth8tFsR6xp09TUaSUeml6/bh8/uO55Zl93Mu6LVEN0KNfm/S3WfrH/NM/f2s/2/p/P336578+SX8p0sGFIfTX18/8mr99/DIv6vTPxWebFnU6KNcP7LyDMv3b0/SfJ6sr1pqydlKmmy9cxdpk4aj49DSv+Jjt+zallH/16fu/5THzr/KL05NuprN2zbydr13Tvmu7FHYLH6tr1qxucNFld1kd8+oG3Szm/A26Gc1ndzm/BFMUm38zdqZ3Z692TZNmszT/+OWvN33bmyb99PGX5ttvL4vR3Tg4SIvF5k3z+bV3ZL7G4/NbmxZXfUlIb891//Yve91L7OrV908HG15cL/oyv9LN/vhuOz6q6/r09DSlNBgMyrK84qZLH+2Xuns9X7ty8X69wO279uLL7MYrV0uSGx+naZu119X2Xdu+by/OdzYuba4PKB7QWmPT5mtPpa7TYrH5BbkbhG93cLD5Nt2VFx+2aT6NAq7r6OjzEcmiTj+fpYuj75Xf2tR+PAWWf/tp8v6ng5s06Lc2/e/rK93yn4v036fpyzz95ePP25ZQHpTpv+7gxfv2CwKd+1gWuNX4qG3bsizH43FK6eTkpDn387tl08rdj4+aJr14ce173ccA7dcm/c81j+Tro/taw1r9Nl7RN8fpoLzLtrZten2138/zbrDUutF11oDr+tOyy+5da1Z3Pivdu6XO//P8FLt+W5dfb365WJv5rr2JYe1ht6wJvHn75tmTZ1d82F5x6fO8VY/G4/F8Pu+C0uv1BoNB7+NXdMumlQc8X5tdec2vc/Up/cWVkNkVXu2uMmw6PPzwa7v3xZY716W1rtPr1xtyc361pdOtuXQDt9WX5T6Oaj6/xnjz8DD1+5smm28v/+5eNh/sRnC3n35+mV+6qPq7d9x0YLear83PjafLsqzrehWdi5uOj4/bCz8L3333XZZltzmGOL755puff/5530dxNx75c3nzJqWUXv3OWyPv18a93/X3ZXR3D3Vtz549m114Lb3L82uLy9bZU1osFlu23rfLBmh/RFm2z1MQd8tziWmPz+Uue3R4eHiDTTswHA6LhzIDmd7pO1n2y3Nhza1CWNd1VVXdoKsoitlstvq137IJiGyP46Pb7vjk5KQ7m1YURbcyvXoyFzcBbHEHIazrulu0vtYmgDUPZxEO+KML8Pk1IIzhcLg6Fb77ZRbjI+CTPM8nk0l3efdvkTE+Aj5omqYsyz2+U8/fFwE+aJqmruuyLIui6D7OtWN6BHxQFMVgMKjruq7r2Wx28fMc9836EbDBXj7ubnwEfDAej1cBatv26dOnOz4A4yPgg6Zper1er9drmqYoiu7/L9slPQI+M5vN8jzfy8cq9AiIwvoREMX/A+C7l6dzbmeHAAAAAElFTkSuQmCC", "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.seed(43)\n", "constr_low = [10, 10, 10, 10]\n", "motif_from_constr_low_prior = np.random.dirichlet(constr_low, l_motif)\n", "logo_plot = get_ic_logo(motif_from_constr_low_prior)\n", "logo_plot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Constrained high information content\n", "\n", "When low (<1) alpha values are given, the Dirichlet distribution will be sparse. This means that for each position in the motif a single value will get most mass while others are close to 0. Thus, the motif will have high information content." ] }, { "cell_type": "code", "execution_count": 6, "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", "
ACGT
01.228498e-039.987713e-011.932663e-079.883878e-12
13.711972e-028.230591e-179.628800e-012.379930e-07
28.952084e-042.978610e-029.687221e-015.966345e-04
33.098475e-028.017583e-064.237311e-015.452761e-01
41.241914e-129.794086e-016.295173e-062.058508e-02
\n", "
" ], "text/plain": [ " A C G T\n", "0 1.228498e-03 9.987713e-01 1.932663e-07 9.883878e-12\n", "1 3.711972e-02 8.230591e-17 9.628800e-01 2.379930e-07\n", "2 8.952084e-04 2.978610e-02 9.687221e-01 5.966345e-04\n", "3 3.098475e-02 8.017583e-06 4.237311e-01 5.452761e-01\n", "4 1.241914e-12 9.794086e-01 6.295173e-06 2.058508e-02" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The motif ppm is: \n", "IC per letter: 1.99 1.77 1.79 0.84 1.86\n", "IC per motif: 8.24\n" ] }, { "data": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.seed(42)\n", "constr_high = [0.1, 0.1, 0.1, 0.1]\n", "motif_from_constr_high_prior = np.random.dirichlet(constr_high, l_motif)\n", "logo_plot = get_ic_logo(motif_from_constr_high_prior)\n", "logo_plot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Imbalanced alphas: one (or more) letter is more probable than the rest.\n", "\n", "In this example, higher value is given for the alpha corresponding to letter 'A', thus it is more likely to have the highest probability in each position. The alpha corresponding to letter 'G' has the lowest probability, thus it is less frequently appears in the motif as 'C' or 'T'." ] }, { "cell_type": "code", "execution_count": 7, "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", "
ACGT
00.5822510.0904810.0004970.326770
10.6893080.0001950.2952470.015249
20.9006750.0382150.0006340.060476
30.0593680.0109630.0000300.929639
40.2990110.5450080.0754050.080577
\n", "
" ], "text/plain": [ " A C G T\n", "0 0.582251 0.090481 0.000497 0.326770\n", "1 0.689308 0.000195 0.295247 0.015249\n", "2 0.900675 0.038215 0.000634 0.060476\n", "3 0.059368 0.010963 0.000030 0.929639\n", "4 0.299011 0.545008 0.075405 0.080577" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The motif ppm is: \n", "IC per letter: 0.7 1.02 1.43 1.59 0.43\n", "IC per motif: 5.16\n" ] }, { "data": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.seed(42)\n", "unequal = [2, 0.5, 0.3, 0.5]\n", "motif_from_unequal_prior = np.random.dirichlet(unequal, l_motif)\n", "logo_plot = get_ic_logo(motif_from_unequal_prior)\n", "logo_plot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this second example, 'G' and 'C' have higher probability than 'A' or 'T'. The values are generally small, so sparsity is still achieved." ] }, { "cell_type": "code", "execution_count": 8, "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", "
ACGT
00.0000790.9643030.0356186.395171e-13
10.0055900.0003840.9940263.583746e-08
20.0000120.3221110.6778697.818585e-06
30.0009140.0935870.9054993.185328e-12
40.6311560.0547250.3141194.321596e-10
\n", "
" ], "text/plain": [ " A C G T\n", "0 0.000079 0.964303 0.035618 6.395171e-13\n", "1 0.005590 0.000384 0.994026 3.583746e-08\n", "2 0.000012 0.322111 0.677869 7.818585e-06\n", "3 0.000914 0.093587 0.905499 3.185328e-12\n", "4 0.631156 0.054725 0.314119 4.321596e-10" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The motif ppm is: \n", "IC per letter: 1.78 1.95 1.09 1.54 0.83\n", "IC per motif: 7.18\n" ] }, { "data": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.seed(42)\n", "gc_rich = [0.1, 0.5, 0.5, 0.1]\n", "motif_from_gc_rich_prior = np.random.dirichlet(gc_rich, l_motif)\n", "logo_plot = get_ic_logo(motif_from_gc_rich_prior)\n", "logo_plot" ] } ], "metadata": { "kernelspec": { "display_name": "inmotifin", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.4" } }, "nbformat": 4, "nbformat_minor": 2 }