{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Sequence logos in matplotlib\n", "\n", "Inspired by the discussion on https://github.com/biocore/scikit-bio/issues/805 and code by [Jeremy Widmann](https://github.com/biocore/scikit-bio/issues/805#issuecomment-73098553) where the letter patches were made from polygon vertices. Using paths instead of polygons allows for smoother patches.\n", "\n", "### SVG path generation ###\n", "- Font \"Source Code Pro - Medium\" TTF file obtained from https://fontlibrary.org.\n", "- Letters were converted into SVG paths using https://github.com/donbright/font_to_svg, e.g.:\n", "\n", "```\n", "$ ./example1 ./fonts/source-code-pro-2.010R-ro-1.030R-it/TTF/SourceCodePro-Medium.ttf 65 > A.svg\n", "```\n", "\n", "### Reference ###\n", "\n", "Sequence logos: https://schneider.ncifcrf.gov/logorecommendations.html" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from __future__ import division, print_function\n", "from six import StringIO\n", "\n", "from matplotlib.patches import PathPatch\n", "from matplotlib.path import Path\n", "from matplotlib import ticker\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "\n", "import numpy as np\n", "import pandas\n", "\n", "from svgpath2mpl import parse_path" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "_pal = sns.color_palette('colorblind')\n", "default_colors = {'A': _pal[1], 'C': _pal[0], 'G': _pal[4], 'T': _pal[2]}\n", "default_glyphs = {}\n", "default_glyphs['A'] = \"\"\"\\\n", "M 235,-357\n", "L 208,-267\n", "L 389,-267\n", "L 362,-357\n", "Q 346,-411 330,-465\n", "Q 314,-519 300,-575\n", "L 296,-575\n", "Q 282,-519 266,-465\n", "Q 251,-411 235,-357\n", "Z\n", "M 26,0\n", "L 242,-655\n", "L 358,-655\n", "L 574,0\n", "L 468,0\n", "L 412,-188\n", "L 184,-188\n", "L 128,0\n", "L 26,0\n", "Z\n", "\"\"\"\n", "default_glyphs['C'] = \"\"\"\\\n", "M 352,12\n", "Q 291,12 238,-10\n", "Q 185,-33 146,-76\n", "Q 107,-120 84,-182\n", "Q 62,-245 62,-326\n", "Q 62,-406 84,-469\n", "Q 107,-532 146,-576\n", "Q 186,-620 240,-643\n", "Q 295,-667 360,-667\n", "Q 420,-667 467,-642\n", "Q 514,-618 544,-586\n", "L 488,-523\n", "Q 463,-549 432,-564\n", "Q 401,-580 360,-580\n", "Q 316,-580 280,-562\n", "Q 244,-545 218,-512\n", "Q 193,-480 179,-433\n", "Q 165,-387 165,-329\n", "Q 165,-270 179,-223\n", "Q 193,-176 219,-143\n", "Q 245,-110 281,-92\n", "Q 317,-75 362,-75\n", "Q 405,-75 439,-93\n", "Q 473,-111 502,-144\n", "L 558,-83\n", "Q 519,-37 468,-12\n", "Q 418,12 352,12\n", "Z\n", "\"\"\"\n", "default_glyphs['G'] = \"\"\"\\\n", "M 339,12\n", "Q 277,12 224,-10\n", "Q 171,-33 132,-76\n", "Q 94,-120 72,-182\n", "Q 51,-245 51,-326\n", "Q 51,-406 73,-469\n", "Q 95,-533 134,-577\n", "Q 173,-621 227,-644\n", "Q 281,-667 344,-667\n", "Q 409,-667 454,-641\n", "Q 499,-616 528,-586\n", "L 472,-523\n", "Q 449,-548 419,-564\n", "Q 389,-580 344,-580\n", "Q 302,-580 267,-562\n", "Q 232,-545 207,-512\n", "Q 182,-480 168,-433\n", "Q 154,-387 154,-329\n", "Q 154,-211 203,-143\n", "Q 252,-75 345,-75\n", "Q 375,-75 401,-84\n", "Q 428,-93 445,-109\n", "L 445,-265\n", "L 324,-265\n", "L 324,-347\n", "L 537,-347\n", "L 537,-65\n", "Q 505,-33 453,-10\n", "Q 402,12 339,12\n", "Z\n", "\"\"\"\n", "default_glyphs['T'] = \"\"\"\\\n", "M 250,0\n", "L 250,-571\n", "L 39,-571\n", "L 39,-655\n", "L 561,-655\n", "L 561,-571\n", "L 350,-571\n", "L 350,0\n", "L 250,0\n", "Z\n", "\"\"\"\n", "default_glyphs['U'] = \"\"\"\\\n", "M 301,12\n", "Q 250,12 208,-3\n", "Q 167,-18 137,-49\n", "Q 107,-81 91,-130\n", "Q 75,-180 75,-249\n", "L 75,-655\n", "L 176,-655\n", "L 176,-243\n", "Q 176,-153 210,-114\n", "Q 245,-75 301,-75\n", "Q 357,-75 392,-114\n", "Q 428,-153 428,-243\n", "L 428,-655\n", "L 525,-655\n", "L 525,-249\n", "Q 525,-180 509,-130\n", "Q 493,-81 464,-49\n", "Q 435,-18 393,-3\n", "Q 352,12 301,12\n", "Z\n", "\"\"\"\n", "\n", "def _get_glyph(path_data, color, x, y, dx, dy, **kwargs):\n", " kwargs.setdefault('facecolor', color)\n", " kwargs.setdefault('edgecolor', 'none')\n", " path = parse_path(path_data)\n", " # normalize and flip upside down\n", " path.vertices[:, 0] -= path.vertices[:, 0].min()\n", " path.vertices[:, 1] -= path.vertices[:, 1].min()\n", " path.vertices[:, 0] /= path.vertices[:, 0].max()\n", " path.vertices[:, 1] /= path.vertices[:, 1].max()\n", " path.vertices[:, 1] = 1 - path.vertices[:, 1]\n", " # scale then translate\n", " path.vertices *= [dx, dy]\n", " path.vertices += [x, y]\n", " return PathPatch(path, **kwargs)\n", "\n", " \n", "def _draw_logo(ax, matrix, charwidth, glyphs=default_glyphs, colors=default_colors):\n", " for i, (_, position) in enumerate(matrix.iterrows()):\n", " letters_sorted = position.sort_values()\n", " bottom = 0\n", " for letter, height in letters_sorted.iteritems():\n", " patch = _get_glyph(glyphs[letter], colors[letter],\n", " i*charwidth, bottom, charwidth, height)\n", " ax.add_artist(patch)\n", " bottom += height\n", "\n", "\n", "def plot_seqlogo(ax, pfm, info=False, charwidth=1.0, **kwargs):\n", " if info:\n", " info_content = 2 - pfm.apply(lambda p: (-p * np.log2(p)).sum(), axis=1)\n", " matrix = pfm.mul(info_content, axis=0)\n", " else:\n", " matrix = pfm\n", " \n", " seqlen = len(pfm)\n", " _draw_logo(ax, matrix, charwidth, **kwargs)\n", " ax.set_xlim([0, seqlen * charwidth])\n", " \n", " # major ticks\n", " ax.xaxis.set_major_locator(ticker.FixedLocator(np.arange(0, seqlen)))\n", " ax.xaxis.set_major_formatter(ticker.NullFormatter())\n", " ax.tick_params(which='major', direction='out')\n", " # minor ticks\n", " ax.xaxis.set_minor_locator(ticker.FixedLocator(np.arange(0, seqlen) + 0.5))\n", " ax.xaxis.set_minor_formatter(ticker.FixedFormatter(np.arange(1, seqlen+1)))\n", " ax.tick_params(which='minor', length=0)\n", " \n", " if info:\n", " ax.set_ylim([0, 2])\n", " ax.yaxis.set_major_locator(ticker.FixedLocator([0., 1., 2.]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example: CTCF core motif logo" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ACGT
P0
P10.0472460.0035710.8966490.052534
P20.0658480.8840120.0049340.045206
P30.0024250.9903240.0024800.004771
P40.5709850.4168020.0060080.006205
P50.0025330.4687650.0032650.525437
\n", "
" ], "text/plain": [ " A C G T\n", "P0 \n", "P1 0.047246 0.003571 0.896649 0.052534\n", "P2 0.065848 0.884012 0.004934 0.045206\n", "P3 0.002425 0.990324 0.002480 0.004771\n", "P4 0.570985 0.416802 0.006008 0.006205\n", "P5 0.002533 0.468765 0.003265 0.525437" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ctcf_str = \"\"\"\\\n", "P0 A C G T\n", "P1 0.047246 0.003571 0.896649 0.052534\n", "P2 0.065848 0.884012 0.004934 0.045206\n", "P3 0.002425 0.990324 0.002480 0.004771\n", "P4 0.570985 0.416802 0.006008 0.006205\n", "P5 0.002533 0.468765 0.003265 0.525437\n", "P6 0.002455 0.988463 0.004303 0.004779\n", "P7 0.014711 0.016346 0.016151 0.952792\n", "P8 0.327718 0.047936 0.551725 0.072621\n", "P9 0.013941 0.352799 0.611807 0.021454\n", "P10 0.068858 0.073635 0.002662 0.854844\n", "P11 0.009063 0.002133 0.985576 0.003228\n", "P12 0.026183 0.036267 0.821984 0.115566\n", "P13 0.161310 0.448602 0.067884 0.322203\n", "P14 0.207108 0.522929 0.144157 0.125805\n", "P15 0.524443 0.052028 0.293162 0.130367\n", "\"\"\"\n", "\n", "def read_matrix(fp):\n", " return pandas.read_csv(fp, sep=' ', index_col=0)\n", "\n", "def reverse_complement(matrix):\n", " col_order = ['A', 'C', 'G', 'T']\n", " complement = {'A': 'T', 'T': 'A', 'C': 'G', 'G': 'C'}\n", " return matrix.iloc[::-1].rename(columns=complement)[col_order]\n", "\n", "pfm = read_matrix(StringIO(ctcf_str))\n", "pfm.head()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0,0.5,'information content (bits)')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(15,10))\n", "ax = fig.add_subplot(111)\n", "plot_seqlogo(ax, reverse_complement(pfm), info=True)\n", "ax.set_aspect(1)\n", "ax.set_xlabel('position')\n", "ax.set_ylabel('information content (bits)')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.6.4" } }, "nbformat": 4, "nbformat_minor": 1 }