{ "metadata": { "name": "", "signature": "sha256:2e9f38d77e8fd2511c99781c05837c3397777ffafe681ff089a1963c1598b61d" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Cluster neoblast transcripts with CAP3\n", "\n", "Use CAP3 to cluster neoblast transcripts:\n", " \n", " cap3 aboobaker.graveley.pearson.rajewsky.renamed.fa > cap3.out 2> cap3.err" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import gzip, os, sys\n", "#import custom functions for displaying tables, bash commands\n", "sys.path.append(os.path.abspath(\"/home/damian/\"))\n", "from dk_ipython import *\n", "from IPython.display import HTML\n", "HTML(addToggle())" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "The raw code for this IPython notebook is by default hidden for easier reading.\n", "To toggle on/off the raw code, click here." ], "metadata": {}, "output_type": "pyout", "prompt_number": 1, "text": [ "" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "prefix = '/home/share/projects/smed_neoblast/cap3/'\n", "\n", "faFile = open(prefix + 'aboobaker.graveley.pearson.rajewsky.renamed.fa')\n", "\n", "from collections import defaultdict\n", "\n", "sourceKey = {'a':'Aboobaker','P':'Pearson','R':'Rajewsky','G':'Graveley'}\n", "sources = defaultdict(int)\n", "for line in faFile:\n", " if line[0] == '>':\n", " source = sourceKey[line[1]]\n", " sources[source] += 1\n", "\n", "print 'Data sources used:'\n", "for source, count in sources.items():\n", " print ' ' + source + ' - ' + commas(count) + ' transcripts'" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Data sources used:\n", " Pearson - 2,147 transcripts\n", " Graveley - 4,056 transcripts\n", " Rajewsky - 7,696 transcripts\n", " Aboobaker - 823 transcripts\n" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "inFile = open('/home/share/projects/smed_neoblast/cap3/cap3.out')\n", "\n", "clusters = []\n", "block = []\n", "used = defaultdict(int)\n", "for line in inFile:\n", " if line.find('*******************') != -1:\n", " break\n", " \n", "for line in inFile:\n", " if line.strip() == '':\n", " break\n", " if line.find('*******************') != -1:\n", " if len(block) != 0:\n", " block.sort()\n", " aBlock = tuple(set(block))\n", " if len(block) > 1:\n", " for x in block:\n", " used[x] += 1\n", " clusters.append(tuple(set(block)))\n", " \n", " block = []\n", " else:\n", " name = sourceKey[line.strip().split()[0][0]]\n", " block.append(name)\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 62 }, { "cell_type": "code", "collapsed": false, "input": [ "from collections import Counter\n", "\n", "clusterCount = Counter(clusters).items()\n", "clusterCount.sort(key = lambda x : x[1], reverse = True)\n", "\n", "comboTable = ListTable()\n", "comboHeader = ['Pearson','Graveley','Rajewsky','Aboobaker']\n", "comboTable.append(comboHeader + ['Number of clusters'])\n", "for combo, count in clusterCount:\n", " row = []\n", " for c in comboHeader:\n", " if c in combo:\n", " row.append('X')\n", " else:\n", " row.append('-')\n", " row.append(count)\n", " comboTable.append(row)\n", " \n", "print 'Cluster compositions:'\n", "print '*Number of clusters total with members from at least 2 or more sources:', commas(len(clusters))\n", "print '*Number of clusters with the composition described in the row'\n", "print '*For example, there are 81 clusters containing at least one transcript from all 4 sources'\n", "comboTable" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Cluster compositions:\n", "*Number of clusters total with members from at least 2 or more sources: 2,577\n", "*Number of clusters with the composition described in the row\n", "*For example, there are 81 clusters containing at least one transcript from all 4 sources\n" ] }, { "html": [ "
PearsonGraveleyRajewskyAboobakerNumber of clusters
X-X-698
-XX-661
--X-321
X-XX212
XXX-170
--XX131
-X--105
XXXX81
XX--63
-XXX57
-X-X34
X--X30
XX-X10
X---4
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 98, "text": [ "[['Pearson', 'Graveley', 'Rajewsky', 'Aboobaker', 'Number of clusters'],\n", " ['X', '-', 'X', '-', 698],\n", " ['-', 'X', 'X', '-', 661],\n", " ['-', '-', 'X', '-', 321],\n", " ['X', '-', 'X', 'X', 212],\n", " ['X', 'X', 'X', '-', 170],\n", " ['-', '-', 'X', 'X', 131],\n", " ['-', 'X', '-', '-', 105],\n", " ['X', 'X', 'X', 'X', 81],\n", " ['X', 'X', '-', '-', 63],\n", " ['-', 'X', 'X', 'X', 57],\n", " ['-', 'X', '-', 'X', 34],\n", " ['X', '-', '-', 'X', 30],\n", " ['X', 'X', '-', 'X', 10],\n", " ['X', '-', '-', '-', 4]]" ] } ], "prompt_number": 98 }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "\n", "%matplotlib inline\n", "\n", "sourceCluster = defaultdict(int)\n", "for combo, count in clusterCount:\n", " if len(combo) > 1:\n", " for item in combo:\n", " sourceCluster[item] += count\n", "\n", "df = pd.concat([pd.Series(sources),pd.Series(sourceCluster)],axis=1)\n", "df.columns = ['Number of neoblast transcripts','Number of neoblast transcripts clustered']\n", "df.plot(kind='bar',figsize=[12,6])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 141, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAssAAAGeCAYAAABio0wCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlclXXe//H34YALggqCoDjmNqOWHaddUbFIESNUMpux\nshBv+Wm3mqmljBlYLo+ySVvu0pOZmq2GigblgpnZMg0uTDQ1t5pSLnAIReUgIofz+4Pbk6gXuAAH\n5fV8PHo84nttny98o/f58r2uy+R0Op0CAAAAcB4PdxcAAAAA1FWEZQAAAMAAYRkAAAAwQFgGAAAA\nDBCWAQAAAAOEZQAAAMBAlWF50aJFioqKUnR0tCZPnqySkhIVFBRo5MiRGjBggOLi4nT8+PEK+0dE\nRCgyMlLbtm1ztWdlZSk6OloRERGaNWtWzfQGAAAAqEaVhuUDBw7oo48+0urVq7Vu3To5HA6lpqbK\narUqNDRU69evV48ePWS1WiVJe/bsUVpamlJTU7V48WLNnDlTZx7jnJSUpNmzZ2vDhg3Kzs7W1q1b\na753AAAAwBWoNCz7+PjI09NTJ0+eVGlpqYqLi9WyZUtt3rxZMTExkqSYmBht2rRJkpSenq6oqCh5\neXmpTZs2atu2rTIzM2Wz2WS322WxWCRJQ4YMcR0DAAAA1FWelW1s3ry54uLidOedd6pRo0bq3bu3\nevXqpfz8fAUEBEiSAgIClJ+fL0my2Wzq3r276/jg4GDl5ubK09NTwcHBrvagoCDZbLaa6A8AAABQ\nbSqdWf7ll1+0bNkybd68WV9++aWKioqUkpJSYR+TySSTyVSjRQIAAADuUGlYzsrK0k033SQ/Pz95\nenqqf//+2rVrlwICApSXlyepfDbZ399fUvmMcU5Ojuv4nJwcBQcHX7C9ZcuWVRZXWuq4rE4BAAAA\n1aHSZRgdOnTQ66+/ruLiYjVs2FDffPONLBaLGjdurNWrVys+Pl5r1qxRv379JEnh4eGaPHmyYmNj\nlZubq+zsbFksFplMJvn4+CgzM1MWi0UpKSkaMWJElcUdPVpUPb3EFQkM9FVe3gl3l4F6hnGH2saY\ngzsw7uqGwEBfw22VhuUuXbpo8ODBGjp0qDw8PHT99dfrgQcekN1u18SJE5WcnKyQkBAtWLBAktSp\nUycNHDhQUVFRMpvNSkxMdC3RSExMVEJCgoqLi9W3b1+FhYVVYxcBAACA6mdynnm2Wx3EJ626gU+9\ncAfGHWobYw7uwLirGyqbWeYNfgAAAIABwjIAAABggLAMAAAAGCAsAwAAAAYIywAAAICBSh8dV9c5\nHA7t3/9ztZ6zXbsOMpvNle7Tp89t+stfHtK4cRMlSe+9946Ki08qLi7+iq8/e3aSevXqozvvvPuK\nz1WZzZs3acmSRWrRIkAvv/xGjVxj3Lh4jRv3hLp06VqhPS1tnf7znx/1xBNPXdL5cnIO6/vvM9W/\nf+QlbXOH55+fpb/85SG1a9fecJ9PP/1Et93Ww/XqeAAAUPdc1WF5//6f9fi8tfJuVvXbAC9G0TGb\nXn5ykDp2/GOl+3l5eWnr1s81YkSsmjVrXq2v+76Sc5WWlsrT8+J+pJ98kqKpU5/WjTd2v+zrVcWo\nL5fbx0OHDmrjxvUXDMSVbbuU70t1KCsr09SpT1e5X1raOrVv35GwDABAHXZVh2VJ8m7WUj5+IbV6\nTbPZU4MGxejDD99TfPxjFbadOzPcv38fbdz4pXbsyNCSJVb5+vpq7949uuuufmrfvoOSkz9USUmJ\n5sx5USEhbSRJGRnfacWKZbLbCzV+/CSFhvaWw+HQwoWvadeu7SopOa377humwYPv044dGVq8eKGa\nNm2q7Oz9ev/9VRXq2bjxM61YsVROp1M9e/bW2LHj9fbbb+r77zM1d+6z6t07TI899rhr/zN1Nm/u\np3379qpz56569dXyl8789NOPeu21+Tp58qSaNWuu6dMT1aJFgHbv/o/mzZurU6dOKSSkjRISnpGv\nb/nzCtevT9Pzzz8nh8OhhIRn1LXrDRXq27Ztq5YvX6LS0tNq2rSZEhNnyc/PXzt3btcrr/xdkmQy\neei116xauPA1/fLLfo0c+aAGDozWAw8Md52n4rZ75evbVFu2pKu4uFhlZWV64YUFmjZtsk6cOC6H\no1SjR49V7959dfjwIU2ZMkEWy03KyspUYGBLzZ37dzVs2FArV36glJRVMpvNateuvWbOnKOioiIt\nWDBP//nPj5JMiouLV9++d6l//z4aPHioMjK+06RJT8lqfV3jx09S585d1L9/Hw0aFKPvvvtW/v4B\nmjlzjnbuzNBPP/2oZ599Wo0aNdIbbyzRkiVWffXVlzKbzbr99h767/9+XAAAwL2u+rDsLvfdN0yP\nPjpcDz30SIX282dNf/96z57deu+9j+Xr21TDhg1SdPQQvfnmcq1c+YGSkz/UhAmT5XQ6lZNzWIsX\nL9eBA79qwoQx+uCD1fr000/k4+OjN99crpKSEj322H/p9tt7SJJ27/6P3nnnIwUHt6pw5d9+y9PC\nha9pyZIV8vHx1aRJ4/Tll1s0cuRo7diRoXHjnlDnzl3O69uePf+rFStWqkWLAI0dO0rbt29X69Yd\ntGDBPD3//Etq1qy50tM3yGp9XQkJz2jWrERNmjRV3bvfpLfeWqS337a6+nLqVLHefvs9ZWbu1Ny5\nz2r58g919ntwune/SVbrUknSunVr9O67yzVu3ER98MEKTZ48Td26WVRcXCwvLy+NHTte77+/Qi+8\nMP+8ms/dlpa2Trt3/6+WLftAvr6+cjgcmjt3nry9m6igoEBjxoxU7959JUkHDvyqmTPnaurU6Xrm\nmQR98cVmRUQM1LvvLtPHH6+Tp6en7PZCSdLSpYvl6+urZcs+kCSdOFH+IPni4mLdcEM319Kcs8dB\ncXGxunS5XuPHT9LSpYv19ttWPfHEU1q1aqXrZ3DsWIG+/HKL3nsvWZJc1wOA+qYmlljWZf7+NfcX\nXlQPwvJl8vZuosjIKK1c+YEaNmx0Ucd07Xq9/P1bSJLatPmD7rijpySpQ4eO2rEjQ1J5yAoP7+/a\np3XrEGVn79c///mt9u7doy1b0iVJdrtdBw78KrPZrK5dbzgvKEvSjz/+oJtvvlXNmjWXJPXvH6ld\nu3aqT587JUlGL2/s2vUGBQQESpI6dfqTDh48qNJSD+3bt1cTJ5bPpJeVlalFi0DZ7YUqLCxU9+43\nSZIiI6M0Y8Y0V1/69RsgqTwU2+12FRZWDIE2W66eeWaajhzJ1+nTp9W6dflfCW68sbteeeUlRURE\nqm/fcAUGtjSs90J9MZlMuu22O1wz3E6nUwsXvqbMzF3y8DDpt9/ydPToEUlSq1Yh6tSpfOlN585d\ndPjwIUlSx45/VFLSdIWF3en6nm3f/k89++xc13XOnN/Dw8NwnbmHh4fuvjtCkhQRMVDTpz95Xt1N\nmvioQYOGmjv3WYWG9lGvXn0M+woA17LqXmJZlxUds+mduT7y8zv//+GoOwjLV2DYsOEaNeph3XNP\ntKvNbDarrKw8AJWVlam09LRrm5dXA9e/m0wm19cmk0kOh8PwOmdmKSdNekq33dajwrYdOzLUqFFj\nw+MqhkhnhRlPo7XDZ9dpNnu4amvfvqMWLlxSYd9zw29VPDwqXnP+/Bc0fPgI9erVRzt3bteSJVZJ\n0sMPxyo0tI+++Wabxo4dpZdeevWSriNJjRr9/iFmw4ZPdexYgZYsWSGz2axhwwbp1KkSSVKDBl5n\n1WeWw3FKkjRv3gLt2rVDX331pZYvX+KaTb5QaG/QoOFFrcV2Oi/8M/D09NSbby5TRsZ32rIlXatW\nfVRjN14CQF3njiWWgBEeHXcFmjZtqrvu6qdPPklxhZ7g4Fb/t561fD1uaWnpJZ3T6XTq8883yel0\n6uDBAzp06KCuu66dbr+9p1at+th1vl9+yVZxcXGl5+rS5Qbt2rVDx44VyOFwaNOmDfrzn2++5H6a\nTCa1bdtOBQVHlZX1vaTym+b27ftZPj4+8vVtqszMXZKkzz5L1U033eLqy+bNGyVJmZm75OPjK2/v\nJhXOXVRkd81if/rpJ672gwcPqEOHjnrooUfVpcv1+uWXbDVp4qOiIvsFazx327mB1m63y8/PX2az\nWTt2ZCgn53ClfXY6ncrNzdHNN9+qsWPHq7CwUCdPntRtt92hVas+cu13ZhlGZcrKyvT555skla8h\nt1jKZ+G9vb1dyy1OnjypwsIT6tmzl8aPn6Q9e/63yvMCAICad9XPLBcds9X6uc6eGRw+/OEK4WnQ\noBhNmzZZsbEP6o47eqpxY++zjjM+35ltJpNJQUHBGj36UdnthXryyQR5eXkpOnqIDh8+pFGjHpbT\n6ZSfn7/mzJlX4dhzBQQEaMyYcZowYYycTqdCQ/uod++wKvt2ofN5enrqueee18svv6jCwkI5HKX6\ny18eVPv2HTR9epJefHGuiouLFRLSRn/7W6LrXA0aNFBc3EOuG/x+v0b5ReLi4jVjxlT5+jbVLbfc\n6gqxK1e+rx07MmQyeahDh47q0aOXpPKZ+9jYB3XPPRVv8OvYsdNZ28pv8Dv75xQREampUyfp0Uf/\nqs6du+q6635/pNu5M8JnZvqfe+4Z2e2FcjqdGjbsr/Lx8dGjj47SSy89r0ce+Ys8PMyKi4tXWNid\nlc4qN2rUWP/+9w9atuwt+fm10LPPzpEk3XNPtF58ca4aNWqkefNe1rRpk1VSUiLJqfHjJ1X6cwIA\nALXD5KxsIaib5eVVPmvnrucs1zeBgb5V/ixgrH//MG3cuNXdZVx1GHeobYy5umHv3t1KsH5bL5Zh\nFB49qEXT+rFmuQ4IDPQ13HZVzyybzeYqn4kMuFt1PocbAADULtYsAzVsw4Yv3F0CAAC4TIRlAAAA\nwABhGQAAADBAWAYAAAAMEJYBAAAAA1d1WHY4HNq7d3e1/lPZm/TO6NPnNr322gLX1++9947rzXNX\navbsJNcrrWvS5s2b9PDDw/T442Nr7BrjxsXrp59+PK89LW2d5s9/4ZLPl5NzWBs3fnbJ29zh+edn\naf/+fZXu8+mnn+i333674mvdf3+0jh8/dsnH7dy5XVlZ/7ri6xu53LoAAKhLrupHx+3f/7OeWvuM\nmlTybLxLYc87oRcGPVvl4+i8vLy0devnGjEiVs2aNa/WR4NdyblKS0vl6XlxP9JPPknR1KlP68Yb\nu1/29api1JfL7eOhQwe1ceN69e8feUnbLuX7Uh3Kyso0derTVe6XlrZO7dt3VEBAwBVd73K/nzt2\nZMjbu4m6dbNc9DGX8r3kkXkAgGvBVR2WJalJoK98Wzev1WuazZ4aNChGH374nuLjH6uwbfbsJPXq\n1Ud33nm3JKl//z7auPFL7diRoSVLrPL19dXevXt011391L59ByUnf6iSkhLNmfOiQkLaSJIyMr7T\nihXLZLcXavz4SQoN7S2Hw6GFC1/Trl3bVVJyWvfdN0yDB9+nHTsytHjxQjVt2lTZ2fv1/vurKtSz\nceNnWrFiqZxOp3r27K2xY8fr7bff1PffZ2ru3GfVu3eYHnvscdf+Z+ps3txP+/btVefOXfXqq+Wz\n6D/99KNee22+Tp48qWbNmmv69ES1aBGg3bv/o3nz5urUqVMKCWmjhIRn5Otb/gFm/fo0Pf/8c643\n+HXtekOF+rZt26rly5eotPS0mjZtpsTEWfLz89fOndv1yit/lySZTB567TWrFi58Tb/8sl8jRz6o\ngQMrvsGv4rbyN/ht2ZKu4uJilZWV6YUXFmjatMk6ceK4HI5SjR49Vr1799Xhw4c0ZcoEWSw3KSsr\nU4GBLTV37t/VsGFDrVz5gVJSVslsNqtdu/aaOXOOioqKtGDBvP97pblJcXHx6tv3LvXv30eDBw9V\nRsZ3mjTpKVmtr2v8+Enq3LmL+vfvo0GDYvTdd9/K3z9AM2fO0c6dGfrppx/17LNPq1GjRnrjjSVa\nssSqr776UmazWbff3kP//d+PV/heGV37jMOHD2nq1Ce0fPmHksr/4lFcfFJxcfEV+tK+fQeNGTNO\na9eukoeHWRs2pOmJJ57SH/5wnf7+97nKzc2RJE2YMFk33thdb721SIcOHdChQ4cUHNxKjz8+RS++\nOOe8/Y4dK1BS0nT99lueunWznPfKcQAArkZXfVh2l/vuG6ZHHx2uhx56pEL7+bNpv3+9Z89uvffe\nx/L1baphwwYpOnqI3nxzuVau/EDJyR9qwoTJcjqdysk5rMWLl+vAgV81YcIYffDBan366Sfy8fHR\nm28uV0lJiR577L90++09JEm7d/9H77zzkYKDK74B6Lff8rRw4WtasmSFfHx8NWnSOH355RaNHDla\nO3ZkaNy4J9S5c5fz+rZnz/9qxYqVatEiQGPHjtL27dvVunUHLVgwT88//5KaNWuu9PQNslpfV0LC\nM5o1K1GTJk1V9+436a23Funtt62uvpw6Vay3335PmZk7NXfus1q+/MMKIap795tktS6VJK1bt0bv\nvrtc48ZN1AcfrNDkydPUrZtFxcXF8vLy0tix4/X++yv0wgvzz6v53G1paeu0e/f/atmyD+Tr6yuH\nw6G5c+fJ27uJCgoKNGbMSPXu3VeSdODAr5o5c66mTp2uZ55J0BdfbFZExEC9++4yffzxOnl6espu\nL5QkLV26WL6+vlq27ANJ0okT5W/7Ki4u1g03dNO4cRPPGwfFxcXq0uV6jR8/SUuXLtbbb1v1xBNP\nadWqla6fwbFjBfryyy16771kSXJd72xG1zZy9mvFz+1LkyY+Gjx4qLy9vfXXvz4sSUpKmq4HHnhQ\nFsuflZOToylTxmvFipWSpOzsbL3++mI1aNDAcL+3335T3bvfpNjY/9I332zTJ5+kVFofAABXA8Ly\nZfL2bqLIyCitXPmBGjZsdFHHdO16vfz9W0iS2rT5g+64o6ckqUOHjtqxI0NSecAJD+/v2qd16xBl\nZ+/XP//5rfbu3eNaz2y323XgwK8ym83q2vWG84KyJP344w+6+eZb1axZ+cx7//6R2rVrp/r0uVOS\nDGf+una9QQEBgZKkTp3+pIMHD6q01EP79u3VxInlM+llZWVq0SJQdnuhCgsL1b37TZKkyMgozZgx\nzdWXfv0GSCoPxXa7XYWFFUOgzZarZ56ZpiNH8nX69Gm1bl3+etMbb+yuV155SRERkerbN1yBgS0r\nnak8d5vJZNJtt93hmuF2Op1auPA1ZWbukoeHSb/9lqejR49Iklq1ClGnTuVLbzp37qLDhw9Jkjp2\n/KOSkqYrLOxO1/ds+/Z/6tln57quc+b8Hh4err8mnMvDw0N33x0hSYqIGKjp0588r+4mTXzUoEFD\nzZ37rEJD+6hXrz7nncfo2pU5c/4L9aV8++/7ZmR8p+zs39dZFxUV6eTJkzKZTOrdO0wNGjSodL/M\nzJ2aM+dFSVLPnr3l69u0yvoAAKjrCMtXYNiw4Ro16mHdc0+0q81sNqusrDyBlJWVqbT0tGubl1cD\n17+bTCbX1yaTqdIbC8/MDk6a9JRuu61HhW07dmSoUaPGhsdVDJHOCjOeRmtKz67TbPZw1da+fUct\nXLikwr7nht+qeHhUvOb8+S9o+PAR6tWrj3bu3O66UfLhh2MVGtpH33yzTWPHjtJLL716SdeRpEaN\nfv8Qs2HDpzp2rEBLlqyQ2WzWsGGDdOpUiSSpQQOvs+ozy+E4JUmaN2+Bdu3aoa+++lLLly9xzehe\nKLQ3aNDwotboOp0X/hl4enrqzTeXKSPjO23Zkq5Vqz7Syy+/ccHjjZw99iTp1Kli178b9eWcs8tq\nXSYvL6/ztlT8QGi8H0svAADXmqv6aRju1rRpU911Vz998kmKK/QEB7f6vzWl5etxS0tLL+mcTqdT\nn3++SU6nUwcPHtChQwd13XXtdPvtPbVq1ceu8/3yS7aKi4srPVeXLjdo164dOnasQA6HQ5s2bdCf\n/3zzJffTZDKpbdt2Kig4qqys7yWV3+i1b9/P8vHxka9vU2Vm7pIkffZZqm666RZXXzZv3ihJyszc\nJR8fX3l7N6lw7qIiu2sW+9NPP3G1Hzx4QB06dNRDDz2qLl2u1y+/ZKtJEx8VFdkvWOO5284NbXa7\nXX5+/jKbzdqxI0M5OYcr7bPT6VRubo5uvvlWjR07XoWFhTp58qRuu+0OrVr1kWu/qpZCSOUfmj7/\nfJOk8jXkFkv5LLy3t7drucXJkydVWHhCPXv20vjxk7Rnz/+ed56qru3v30IFBUd0/PgxlZSU6Ouv\nt7k+MF2oL97e3hW+Z7fd1kMrV/4eonfvPr+Gyvbr3v1m1xNJvvnmK504cbzK7w0AAHXdVT+zbM+r\nOqxU97nOnhkcPvzhCgFm0KAYTZs2WbGxD+qOO3qqcWPvs44zPt+ZbSaTSUFBwRo9+lHZ7YV68skE\neXl5KTp6iA4fPqRRox6W0+mUn5+/5syZV+HYcwUEBGjMmHGaMGGMnE6nQkP7qHfvsCr7dqHzeXp6\n6rnnntfLL7+owsJCORyl+stfHlT79h00fXqSXnxxroqLixUS0kZ/+1ui61wNGjRQXNxDrhv8fr9G\n+UXi4uI1Y8ZU+fo21S233OoKsStXvq8dOzJkMnmoQ4eO6tGjl6Ty2dPY2Ad1zz0Vb/Dr2LHTWdvK\nb/A7++cUERGpqVMn6dFH/6rOnbvquuvaV+jzud8Dh8Oh5557RnZ7oZxOp4YN+6t8fHz06KOj9NJL\nz+uRR/4iDw+z4uLiFRZ2Z6Wzyo0aNda///2Dli17S35+LfTss3MkSffcE60XX5yrRo0aad68lzVt\n2mSVlJRIcmr8+Ennncfo2mf/jGJj/0ujRz+qwMCWateuvI9GfenVK0xPPz1V27Z9oSeeeEoTJ07R\nSy89r0cfHS6Hw6E///lmTZlyZknN73UY7RcXN1pJSdM1YsQD6tat+wWXBgEAcLUxOevw303zqgiv\nDodD+/f/XK3XbNeug8xmc7We82oXGOhb5c8Cxvr3D9PGjVvdXcZVh3GH2saYqxv27t2tBOu38vEL\ncXcpNa7w6EEtmtZPfn5MLrhbYCWPIb6qZ5bNZnOVz0QG3I3nDQMAcPVizTJQwzZs+MLdJQAAgMtE\nWAYAAAAMEJYBAAAAA1WG5Z9//llDhgxx/XPLLbdo+fLlKigo0MiRIzVgwADFxcXp+PHfHxO1aNEi\nRUREKDIyUtu2bXO1Z2VlKTo6WhEREZo1a1bN9AgAAACoJlWG5Q4dOmjNmjVas2aNVq1apcaNG6t/\n//6yWq0KDQ3V+vXr1aNHD1mt5S+T2LNnj9LS0pSamqrFixdr5syZrmfeJiUlafbs2dqwYYOys7O1\ndStPCAAAAEDddUnLML7++mu1bdtWrVq10ubNmxUTEyNJiomJ0aZN5S9dSE9PV1RUlLy8vNSmTRu1\nbdtWmZmZstlsstvtslgskqQhQ4a4jgEAAADqoksKy6mpqYqKipIk5efnKyAgQFL5yy/y8/MlSTab\nTcHBwa5jgoODlZube157UFCQbDbbFXcAAAAAqCkXHZZLSkr0+eefa+DAgedtO/uNbAAAAMC14qJf\nSrJ161bdcMMN8vf3lyS1aNFCeXl5CgwMlM1mc7UHBQUpJyfHdVxOTo6Cg4Mv2N6yZctKr+nn5y1P\nT96mVxdU9mYboKYw7lDbGHPud/Soj7tLqHWMu7rtosNyamqq7r33XtfX4eHhWr16teLj47VmzRr1\n69fP1T558mTFxsYqNzdX2dnZslgsMplM8vHxUWZmpiwWi1JSUjRixIhKr3n0aNFldgvViVfAwh0Y\nd6htjLm64ciRQneXUOsYd+53xa+7Lioq0tdff63nnnvO1RYfH6+JEycqOTlZISEhWrBggSSpU6dO\nGjhwoKKiomQ2m5WYmOhaopGYmKiEhAQVFxerb9++CgsLu5J+AQAAADXK5DzzXLc6iE9adQOzLXAH\nxh1qG2Oubti7d7cSrN/Kxy/E3aXUuMKjB7VoWj/5+bVydyn1XmUzy7zBDwAAADBAWAYAAAAMEJYB\nAAAAA4RlAAAAwABhGQAAADBAWAYAAAAMEJYBAAAAA4RlAAAAwABhGQAAADBAWAYAAAAMEJYBAAAA\nA4RlAAAAwABhGQAAADBAWAYAAAAMEJYBAAAAA4RlAAAAwABhGQAAADBAWAYAAAAMEJYBAAAAA4Rl\nAAAAwABhGQAAADBAWAYAAAAMEJYBAAAAA4RlAAAAwABhGQAAADBAWAYAAAAMEJYBAAAAA4RlAAAA\nwABhGQAAADBAWAYAAAAMEJYBAAAAA4RlAAAAwABhGQAAADBwUWH5+PHjmjBhggYOHKh77rlHmZmZ\nKigo0MiRIzVgwADFxcXp+PHjrv0XLVqkiIgIRUZGatu2ba72rKwsRUdHKyIiQrNmzar+3gAAAADV\n6KLC8uzZsxUWFqZPP/1Ua9euVYcOHWS1WhUaGqr169erR48eslqtkqQ9e/YoLS1NqampWrx4sWbO\nnCmn0ylJSkpK0uzZs7VhwwZlZ2dr69atNdczAAAA4ApVGZZPnDihjIwM3X///ZIkT09P+fr6avPm\nzYqJiZEkxcTEaNOmTZKk9PR0RUVFycvLS23atFHbtm2VmZkpm80mu90ui8UiSRoyZIjrGAAAAKAu\n8qxqhwMHDsjf318JCQn66aefdMMNN+hvf/ub8vPzFRAQIEkKCAhQfn6+JMlms6l79+6u44ODg5Wb\nmytPT08FBwe72oOCgmSz2aq7PwAAAEC1qXJmubS0VP/+9781fPhwrV69Wo0bN3YtuTjDZDLJZDLV\nWJEAAACAO1Q5sxwcHKygoCDX8okBAwbIarUqICBAeXl5CgwMlM1mk7+/v6TyGeOcnBzX8Tk5Oa5z\nnNvesmXLSq/t5+ctT0/zZXUM1Ssw0NfdJaAeYtyhtjHm3O/oUR93l1DrGHd1W5VhOTAwUK1atdK+\nffvUvn17ffPNN+rUqZM6deqk1atXKz4+XmvWrFG/fv0kSeHh4Zo8ebJiY2OVm5ur7OxsWSwWmUwm\n+fj4KDMzUxaLRSkpKRoxYkSl1z56tKh6eokrEhjoq7y8E+4uA/UM4w61jTFXNxw5UujuEmod4879\nKvvAUmVCSVTEAAAgAElEQVRYlqQZM2ZoypQpOn36tNq2bau5c+fK4XBo4sSJSk5OVkhIiBYsWCBJ\n6tSpkwYOHKioqCiZzWYlJia6lmgkJiYqISFBxcXF6tu3r8LCwqqhewAAAEDNMDnPPNetDuKTVt3A\nbAvcgXGH2saYqxv27t2tBOu38vELcXcpNa7w6EEtmtZPfn6t3F1KvVfZzDJv8AMAAAAMEJYBAAAA\nA4RlAAAAwABhGQAAADBAWAYAAAAMEJYBAAAAA4RlAAAAwABhGQAAADBAWAYAAAAMEJYBAAAAA4Rl\nAAAAwABhGQAAADBAWAYAAAAMEJYBAAAAA4RlAAAAwABhGQAAADBAWAYAAAAMEJYBAAAAA4RlAAAA\nwABhGQAAADBAWAYAAAAMEJYBAAAAA4RlAAAAwABhGQAAADBAWAYAAAAMEJYBAAAAA4RlAAAAwABh\nGQAAADBAWAYAAAAMEJYBAAAAA4RlAAAAwABhGQAAADBAWAYAAAAMeF7MTuHh4WrSpInMZrM8PT31\n8ccfq6CgQE888YQOHTqkkJAQLViwQE2bNpUkLVq0SMnJyfLw8NDTTz+t3r17S5KysrKUkJCgU6dO\nKSwsTE8//XTN9QwAAAC4Qhc9s/zOO+9ozZo1+vjjjyVJVqtVoaGhWr9+vXr06CGr1SpJ2rNnj9LS\n0pSamqrFixdr5syZcjqdkqSkpCTNnj1bGzZsUHZ2trZu3VoDXQIAAACqx0WH5TOB94zNmzcrJiZG\nkhQTE6NNmzZJktLT0xUVFSUvLy+1adNGbdu2VWZmpmw2m+x2uywWiyRpyJAhrmMAAACAuuiiwrLJ\nZNLIkSN133336aOPPpIk5efnKyAgQJIUEBCg/Px8SZLNZlNwcLDr2ODgYOXm5p7XHhQUJJvNVm0d\nAQAAAKrbRa1Zfv/999WyZUsdOXJEI0eOVIcOHSpsN5lMMplMNVIgAAAA4C4XFZZbtmwpSfL391f/\n/v31r3/9Sy1atFBeXp4CAwNls9nk7+8vqXzGOCcnx3VsTk6OgoODL9h+5rxG/Py85elpvuROofoF\nBvq6uwTUQ4w71DbGnPsdPerj7hJqHeOubqsyLJ88eVIOh0M+Pj4qKirStm3bNG7cOIWHh2v16tWK\nj4/XmjVr1K9fP0nlT86YPHmyYmNjlZubq+zsbFksFplMJvn4+CgzM1MWi0UpKSkaMWJEpdc+erSo\nenqJKxIY6Ku8vBPuLgP1DOMOtY0xVzccOVLo7hJqHePO/Sr7wFJlWP7tt980btw4SZLD4VB0dLR6\n9+6tbt26aeLEiUpOTnY9Ok6SOnXqpIEDByoqKkpms1mJiYmuJRqJiYlKSEhQcXGx+vbtq7CwsOro\nHwAAAFAjTM5zH3NRh/BJq25gtgXuwLhDbWPM1Q179+5WgvVb+fiFuLuUGld49KAWTesnP79W7i6l\n3qtsZpk3+AEAAAAGCMsAAACAAcIyAAAAYICwDAAAABggLAMAAAAGCMsAAACAAcIyAAAAYICwDAAA\nABggLAMAAAAGCMsAAACAAcIyAAAAYICwDAAAABggLAMAAAAGCMsAAACAAcIyAAAAYICwDAAAABgg\nLAMAAAAGCMsAAACAAcIyAAAAYICwDAAAABggLAMAAAAGCMsAAACAAcIyAAAAYICwDAAAABggLAMA\nAAAGCMsAAACAAcIyAAAAYICwDAAAABggLAMAAAAGCMsAAACAAcIyAAAAYICwDAAAABggLAMAAAAG\nLiosOxwODRkyRGPGjJEkFRQUaOTIkRowYIDi4uJ0/Phx176LFi1SRESEIiMjtW3bNld7VlaWoqOj\nFRERoVmzZlVzNwAAAIDq53kxOy1fvlwdO3aU3W6XJFmtVoWGhmr06NGyWq2yWq2aMmWK9uzZo7S0\nNKWmpio3N1cjR47Uhg0bZDKZlJSUpNmzZ8tisWj06NHaunWrwsLCarRzwLXC4XBo//6f3V1GrfL3\n7+7uEgAAqDos5+Tk6IsvvtCYMWO0dOlSSdLmzZu1YsUKSVJMTIxGjBihKVOmKD09XVFRUfLy8lKb\nNm3Utm1bZWZmqnXr1rLb7bJYLJKkIUOGaNOmTYRl4CLt3/+zHp+3Vt7NWrq7lFpRdMymd+b6yM+v\nlbtLAQDUc1WG5Tlz5uipp55SYWGhqy0/P18BAQGSpICAAOXn50uSbDabunf/fTYoODhYubm58vT0\nVHBwsKs9KChINput2joB1AfezVrKxy/E3WUAAFCvVBqWP//8c7Vo0ULXX3+9/vGPf1xwH5PJJJPJ\nVCPF+fl5y9PTXCPnxqUJDPR1dwn12tGjPu4uwS0Yd6htjDn3q4+/7xh3dVulYXnnzp3avHmzvvji\nC5WUlKiwsFBPPvmkWrRooby8PAUGBspms8nf319S+YxxTk6O6/icnBwFBwdfsL1ly6r/nHz0aNHl\n9gvVKDDQV3l5J9xdRr125Ehh1Ttdgxh3qE38rqsb6uPvO8ad+1X2gaXSp2FMmjRJX3zxhTZv3qyX\nXnpJPXr00Lx58xQeHq7Vq1dLktasWaN+/fpJksLDw5WamqqSkhL9+uuvys7OlsViUWBgoHx8fJSZ\nmSmn06mUlBTXMQAAAEBddVFPwzhXfHy8Jk6cqOTkZIWEhGjBggWSpE6dOmngwIGKioqS2WxWYmKi\na4lGYmKiEhISVFxcrL59+3JzHwAAAOq8iw7Lt99+u26//XZJUvPmzV1PxjjXmDFjXM9jPlu3bt20\nbt26y6sSAAAAcAPe4AcAAAAYICwDAAAABgjLAAAAgAHCMgAAAGCAsAwAAAAYICwDAAAABgjLAAAA\ngAHCMgAAAGCAsAwAAAAYICwDAAAABgjLAAAAgAHCMgAAAGCAsAwAAAAYICwDAAAABgjLAAAAgAHC\nMgAAAGCAsAwAAAAYICwDAAAABgjLAAAAgAHCMgAAAGCAsAwAAAAYICwDAAAABgjLAAAAgAHCMgAA\nAGCAsAwAAAAYICwDAAAABgjLAAAAgAHCMgAAAGCAsAwAAAAYICwDAAAABgjLAAAAgAHCMgAAAGCg\n0rB86tQpDRs2TIMHD9Y999yjv//975KkgoICjRw5UgMGDFBcXJyOHz/uOmbRokWKiIhQZGSktm3b\n5mrPyspSdHS0IiIiNGvWrBrqDgAAAFB9Kg3LDRs21PLly5WSkqK1a9fqH//4hzIyMmS1WhUaGqr1\n69erR48eslqtkqQ9e/YoLS1NqampWrx4sWbOnCmn0ylJSkpK0uzZs7VhwwZlZ2dr69atNd87AAAA\n4ApUuQyjcePGkqTTp0/L4XCoWbNm2rx5s2JiYiRJMTEx2rRpkyQpPT1dUVFR8vLyUps2bdS2bVtl\nZmbKZrPJbrfLYrFIkoYMGeI6BgAAAKirqgzLZWVlGjx4sEJDQ3XHHXfoj3/8o/Lz8xUQECBJCggI\nUH5+viTJZrMpODjYdWxwcLByc3PPaw8KCpLNZqvuvgAAAADVyrOqHTw8PJSSkqITJ05o1KhR+vbb\nbytsN5lMMplMNVYgAAAA4C5VhuUzfH191bdvX/3www9q0aKF8vLyFBgYKJvNJn9/f0nlM8Y5OTmu\nY3JychQcHHzB9pYtW1Z5TT8/b3l6mi+lP6ghgYG+7i6hXjt61MfdJbgF4w61jTHnfvXx9x3jrm6r\nNCwfOXJEnp6eatq0qYqLi/X1119r3LhxCg8P1+rVqxUfH681a9aoX79+kqTw8HBNnjxZsbGxys3N\nVXZ2tiwWi0wmk3x8fJSZmSmLxaKUlBSNGDGiyuKOHi2qnl7iigQG+iov74S7y6jXjhwpdHcJbsG4\nQ23id13dUB9/3zHu3K+yDyyVhuW8vDxNmzZNZWVlrrXLPXv2VNeuXTVx4kQlJycrJCRECxYskCR1\n6tRJAwcOVFRUlMxmsxITE11LNBITE5WQkKDi4mL17dtXYWFh1dhFAAAAoPpVGpY7d+6s1atXn9fe\nvHlzLV269ILHjBkzRmPGjDmvvVu3blq3bt3lVQkAAAC4AW/wAwAAAAwQlgEAAAADhGUAAADAAGEZ\nAAAAMEBYBgAAAAwQlgEAAAADhGUAAADAAGEZAAAAMEBYBgAAAAwQlgEAAAADhGUAAADAAGEZAAAA\nMEBYBgAAAAwQlgEAAAADhGUAAADAAGEZAAAAMEBYBgAAAAwQlgEAAAADhGUAAADAAGEZAAAAMEBY\nBgAAAAwQlgEAAAADhGUAAADAAGEZAAAAMEBYBgAAAAwQlgEAAAADhGUAAADAAGEZAAAAMEBYBgAA\nAAwQlgEAAAADhGUAAADAgKe7CwAA1E0Oh0P79//s7jJqjb9/d3eXAKAOIiwDAC5o//6f9fi8tfJu\n1tLdpdS4omM2vTPXR35+rdxdCoA6psqwfPjwYT311FM6cuSITCaTHnjgAT3yyCMqKCjQE088oUOH\nDikkJEQLFixQ06ZNJUmLFi1ScnKyPDw89PTTT6t3796SpKysLCUkJOjUqVMKCwvT008/XbO9AwBc\nEe9mLeXjF+LuMgDAbapcs+zp6am//e1vSk1N1Ycffqh3331Xe/fuldVqVWhoqNavX68ePXrIarVK\nkvbs2aO0tDSlpqZq8eLFmjlzppxOpyQpKSlJs2fP1oYNG5Sdna2tW7fWbO8AAACAK1BlWA4MDFTX\nrl0lSU2aNFHHjh2Vm5urzZs3KyYmRpIUExOjTZs2SZLS09MVFRUlLy8vtWnTRm3btlVmZqZsNpvs\ndrssFoskaciQIa5jAAAAgLrokp6GceDAAf3444+yWCzKz89XQECAJCkgIED5+fmSJJvNpuDgYNcx\nwcHBys3NPa89KChINputOvoAAAAA1IiLvsHPbrdrwoQJmj59unx8fCpsM5lMMplM1V4cAADAtcpZ\nVqZ9+/bpyJFCd5dSK9q16yCz2ezuMi7ZRYXl06dPa8KECRo0aJD69esnSWrRooXy8vIUGBgom80m\nf39/SeUzxjk5Oa5jc3JyFBwcfMH2li0rv8Paz89bnp5X3zf1WhQY6OvuEuq1o0d9qt7pGsS4c6/6\nOO4Yc+5Xn8bdyRN5mv3FZ2pSD8adPe+EFse+pD/96U/uLuWSVRmWnU6npk+fro4dOyo2NtbVHh4e\nrtWrVys+Pl5r1qxxhejw8HBNnjxZsbGxys3NVXZ2tiwWi0wmk3x8fJSZmSmLxaKUlBSNGDGi0msf\nPVp0Zb1DtQgM9FVe3gl3l1Gv1ZdZh3Mx7tyrPo47xpz71bdx1yTQV76tm7u7jFpx5Ehhnf1vrLIP\nylWG5e3bt2vt2rXq3LmzhgwZIkmaNGmS4uPjNXHiRCUnJ7seHSdJnTp10sCBAxUVFSWz2azExETX\nEo3ExEQlJCSouLhYffv2VVhYWHX0DwAAAKgRVYblW2+9VT/99NMFty1duvSC7WPGjNGYMWPOa+/W\nrZvWrVt3aRUCAAAAbnJJT8MAAAAA6hPCMgAAAGCAsAwAAAAYICwDAAAABgjLAAAAgAHCMgAAAGCA\nsAwAAAAYICwDAAAABgjLAAAAgAHCMgAAAGCAsAwAAAAYICwDAAAABgjLAAAAgAHCMgAAAGCAsAwA\nAAAYICwDAAAABgjLAAAAgAHCMgAAAGCAsAwAAAAYICwDAAAABgjLAAAAgAHCMgAAAGCAsAwAAAAY\nICwDAAAABgjLAAAAgAHCMgAAAGDA090FAADgbs6yMu3bt09HjhS6u5Ra0a5dB5nNZneXAVwVCMsA\ngHrv5Ik8zf7iMzUJ9HV3KTXOnndCLwx6Vh07/tHdpQBXBcIyAACSmgT6yrd1c3eXAaCOYc0yAAAA\nYICwDAAAABggLAMAAAAGCMsAAACAgSrDckJCgkJDQxUdHe1qKygo0MiRIzVgwADFxcXp+PHjrm2L\nFi1SRESEIiMjtW3bNld7VlaWoqOjFRERoVmzZlVzNwAAAIDqV+XTMIYOHaoRI0Zo6tSprjar1arQ\n0FCNHj1aVqtVVqtVU6ZM0Z49e5SWlqbU1FTl5uZq5MiR2rBhg0wmk5KSkjR79mxZLBaNHj1aW7du\nVVhYWI12DsDViWfeAgDqiirD8q233qoDBw5UaNu8ebNWrFghSYqJidGIESM0ZcoUpaenKyoqSl5e\nXmrTpo3atm2rzMxMtW7dWna7XRaLRZI0ZMgQbdq0ibAM4IJ45i0AoK64rOcs5+fnKyAgQJIUEBCg\n/Px8SZLNZlP37t1d+wUHBys3N1eenp4KDg52tQcFBclms11J3QCucTzzFgBQF1zxDX4mk0kmk6k6\nagEAAADqlMuaWW7RooXy8vIUGBgom80mf39/SeUzxjk5Oa79cnJyFBwcfMH2li1bVnkdPz9veXqy\njq8uCKwHfw6vy44e9XF3CahB/v4+dfK/McbdtauujjmJcXctq8vjrjKXFZbDw8O1evVqxcfHa82a\nNerXr5+rffLkyYqNjVVubq6ys7NlsVhkMpnk4+OjzMxMWSwWpaSkaMSIEVVe5+jRosspD9UsMNBX\neXkn3F1GvVZfbnSrr44cKayT/40x7q5ddXXMSYy7a1ldHneVhfgqw/KkSZP03XffqaCgQH379tWE\nCRMUHx+viRMnKjk5WSEhIVqwYIEkqVOnTho4cKCioqJkNpuVmJjoWqKRmJiohIQEFRcXq2/fvtzc\nBwAAgDqvyrD80ksvXbB96dKlF2wfM2aMxowZc157t27dtG7dukurDgAAAHAj3uAHAAAAGCAsAwAA\nAAYu6wa/+s7hcGj//p/dXUat8ffvXvVOAAAA1yDC8mXYv/9nPT5vrbybVf34u6td0TGb3pnrIz+/\nVu4uBQAAoNYRli+Td7OW8vELcXcZAAAAqEGsWQYAAAAMEJYBAAAAA4RlAAAAwABhGQAAADBAWAYA\nAAAMEJYBAAAAA4RlAAAAwABhGQAAADBAWAYAAAAM8AY/VMpZVqZ9+/bpyJFCd5dSK9q16yCz2ezu\nMgAAQB1BWEalTp7I0+wvPlOTQF93l1Lj7Hkn9MKgZ9Wx4x/dXQoAAKgjCMuoUpNAX/m2bu7uMgAA\nAGoda5YBAAAAA4RlAAAAwABhGQAAADBAWAYAAAAMEJYBAAAAA4RlAAAAwABhGQAAADBAWAYAAAAM\nEJYBAAAAA4RlAAAAwABhGQAAADBAWAYAAAAMEJYBAAAAA4RlAAAAwABhGQAAADBAWAYAAAAM1HpY\n3rp1qyIjIxURESGr1VrblwcAAAAuWq2GZYfDoeeee06LFy9WamqqUlNTtXfv3tosAQAAALhotRqW\n//Wvf6lt27Zq06aNvLy8FBUVpfT09NosAQAAALhotRqWc3Nz1apVK9fXQUFBys3Nrc0SAAAAgIvm\nWZsXM5lMl7T/Lbd0u2D79u1Zbt3/9OnTOnK8SCYPsySp57DnLrj/NytnXLD9atq/rPS0PNJLZfL4\n/Wd354xBF9x/y3NrL9h+tez/+cwU7Wr8hby8vCq0u3u8SRXH3NU0fi53/7PH3dUyfi53f2eZs8K4\nqwvj7YzTp0+rbWj8Bfevy+PncvY/M+buShx8wf3r6vi5nP3PHnN1abydvX/RMVuF9ro+fi53/z/1\nfFD2vBPntdfl8XO5+zvLnEr87MkL7u/u8VYVk9PpdF7UntVg165devXVV/XWW29JkhYtWiSTyaT4\n+Av/MgYAAADcqVaXYXTr1k3Z2dk6cOCASkpKlJaWprvvvrs2SwAAAAAuWq0uw/D09NSMGTM0atQo\nlZWV6f7771fHjh1rswQAAADgotXqMgwAAADgasIb/AAAAAADhGUAAADAAGEZAAAAMEBYBgAAqCUO\nh8PdJeAScYMfKnA6ncrJyanwpkWgNixfvlyDBw9Ws2bN3F0K6omff/5ZS5Ys0cGDB1VaWiqp/OVZ\ny5cvd3NluJbdfffdioiI0NChQ9WpUyd3l4OLQFhGBU6nU9HR0frkk0/cXQrqmfnz5ystLU3XX3+9\nhg4dqj59+lzyWz+BSxEdHa3hw4frhhtukIdH+R9aTSaTunW78Nu+gOpQWFio1NRUrV69Wg6HQ0OH\nDtW9994rHx8fd5cGA4RlnGfq1Kl66KGHZLFY3F0K6pmysjJt27ZNq1evVlZWlgYOHKj7779fbdu2\ndXdpuAbdd999WrVqlbvLQD32j3/8Q1OmTNHx48cVGRmpxx57TNddd527y8I5avWlJLg67Nq1S2vX\nrlXr1q3l7e3tal+3bp0bq0J94OHhocDAQLVo0UIeHh46duyYJkyYoJ49e2rq1KnuLg/XmLvuukvv\nvvuu+vfvrwYNGrjamzdv7saqcK0rLS3Vli1btGrVKh08eFBxcXG69957tX37dsXHx2v9+vXuLhHn\nYGYZ5zlw4MAF29u0aVPLlaA+WbZsmVJSUtS8eXPdf//96t+/v7y8vFRWVqaIiAht2rTJ3SXiGhMe\nHn5em8lkUnp6uhuqQX1x99136/bbb9ewYcN08803V9j23HPPacaMGW6qDEYIy7igjIwMZWdna+jQ\noTpy5Ijsdrv+8Ic/uLssXMNeeeUVDR06VCEhIedt27NnDzfCALgmpKen6+67767Q9v7772v48OFu\nqghV4dFxOM+rr76qxYsXy2q1SpJOnz6tJ5980s1V4Vo3YcIEHT58WMnJyZKkI0eO6Ndff5UkgjJq\nRElJiZYtW6bx48drwoQJeuedd3T69Gl3l4Vr3Jtvvqlvvvmmwtf85axuIyzjPBs3btTrr7+uxo0b\nS5KCgoJkt9vdXBWudXxIQ21LSkrSv//9bz344IMaPny4fvjhByUlJbm7LFzjXn/9dc2fP18ZGRma\nP3++/vWvf+mNN95wd1moBDf44TwNGjRwPUZJkoqKitxYDeqLjRs3as2aNbrvvvsk8SENNe/777+v\ncONyz549FR0d7caKUB/4+/vrjTfeUGxsrLp166ZXXnmFx2TWcYRlnCcyMlLPPPOMjh8/rg8//FDJ\nyckaNmyYu8vCNY4Paahtnp6eys7Odj2q65dffpGnJ/9bRM246aabKnx9+vRpHThwQJ999plMJpN2\n7NjhpspQFW7ww3nKysr09ddf66uvvpIk9e7dW7feeqsaNmzo5spwLVu8eLF++eUXbdu2Tf/v//0/\nJScn695779Ujjzzi7tJwjfrmm2+UkJDgetLPwYMHNWfOHPXs2dPNlQGoSwjLOE9CQoLmzp3r+tpu\nt2vs2LG8AhY1btu2bRU+pPXq1cvNFeFad+rUKe3bt0+S1KFDhwrPWwZqwvbt29WlSxc1adJEa9as\n0Y8//qhHHnnkgk8CQt3ADX44T1BQkOsml2PHjmnUqFEaPHiwe4tCvdC7d29NnTpVU6dOJSijxqWl\npen06dPq0qWL0tPTNWnSJP3www/uLgvXuKSkJDVu3Fg//fSTli5dqj/84Q+8dKmOY2YZF/T888/L\nbrcrKytL8fHxioyMdHdJuEadu47vbKzjQ02Kjo7WunXrlJGRoZdffllxcXH6n//5H3388cfuLg3X\nsCFDhmjNmjV67bXXFBQUpGHDhikmJkarV692d2kwwJ0McDnzik2TyaQ///nPev3113XjjTfKZDJp\nw4YNioiIcHOFuBbt3LnT3SWgnjpzQ+mWLVs0bNgw3XXXXXr55ZfdXBWudU2aNNHChQu1du1avfvu\nu3I4HCotLXV3WagEYRkun3/+eYXH13Tt2lUOh0NbtmyRJMIyahxvjkRtCgoK0owZM/TVV18pPj5e\np06dUllZmbvLwjVu/vz5+v/t3WtMU/cfx/HPERC5SNYKaPDGnIvDIF6od0zINgmCjYIawuI0Zss0\nEq1DN2+IPmBTjLdRiGZBt8GMMLyQaUvJKIuiUSIMo3hBDaLTigaZM0gFbft/YDyZKWX7J5Yfnn5e\njzitD94P0Hz9nXN+P4PBgG+//RYhISGwWCz47LPPRGdRN/gYBhH1Cnq9HvX19WhqakJ5eTkePHgA\nnU6HoqIi0WmkUFarFadOncKoUaMQHh6Ohw8f4vr164iJiRGdRgpWUlKCiRMnIjw8XHQK/UdcWSYn\nz549w+HDh3Hz5k10dHTIn/9zhwyiN42HklBPevHiBZKSkmAymeTPQkNDERoaKrCKPIHFYkFmZibu\n3r2LyMhITJw4ERqNBhEREaLTyAXuhkFOvv76a7S0tKCqqgqTJk1Cc3MzAgICRGeRwvFQEupJ3t7e\nePfdd3Hv3j3RKeRhdDodCgoKYDQaER0djfz8fHmRgHonriyTk9u3byMnJwdmsxlJSUmYPXs2Pvnk\nE9FZpHA8OZJ62t9//43Zs2djzJgx8Pf3lz/ft2+fwCpSury8PNTV1aG9vR0RERFYu3YtoqOjRWdR\nNzgskxMfHx8AQP/+/dHQ0ICQkBC0trYKriKl+/zzz3H69GkEBASgqakJOp2Oey2TW+l0OtEJ5IF+\n++03eHt7IzY2FhqNBhMmTOBhOL0cX/AjJ7/88gvi4uJw/fp1rFu3Du3t7dDpdEhNTRWdRgp24MAB\nJCYmYuDAgaJTiIjcqq2tDbW1taitrYXJZMKAAQNw6NAh0VnkAodlIuoV9Ho9TCYTgoKCkJiYiPj4\neAQHB4vOIgWrq6tDVlYWGhsb0dnZCZvNBn9/fx6EQ27V0NCAmpoa1NTUoL6+HoMGDYJGo+Gdjl6M\nwzI5aW1tRV5eHmprayFJEqKjo5GWlgaVSiU6jTzAtWvXUFZWBpPJhEGDBuGnn34SnUQKlZycjF27\ndmHVqlU4cuQISktLcevWLaxZs0Z0GinYF198AY1GA41GgzFjxsiPPlLvxd0wyEl6ejrUajX0ej1y\ncnKgVqvx5Zdfis4iD6FWqxEcHAyVSsVn5cntwsPDYbPZ4OXlhXnz5qGqqkp0Einc999/j08//RTv\nvPMOB+W3BF/wIyctLS1IS0uTr5cvX46ysjKBReQJDh48CJPJhEePHiE+Ph5ZWVkYOXKk6CxSMD8/\nP3R2duKDDz7A9u3bERISAt5sJXczm83Yvn07nj9/jsrKSly5cgU5OTnchaUX48oyOZk+fTpOnDgB\nu6unGj0AAAbQSURBVN0Ou90Oo9HIXQnI7e7fv48NGzbAaDRi5cqVHJTJ7bKzs2G325GZmQk/Pz80\nNzdDr9eLziKFy83NRUlJCYKCggAAo0ePxt27dwVXUXf4zDLJxo8fL/9stVrlAyLsdjv8/PxQV1cn\nKo08yKNHj147OTIsLExgDSmd1WrF/fv3MWLECNEp5CEWLFiAkpISzJ07F6WlpQAArVaL48ePCy4j\nV/gYBsk4DJNIZrMZ2dnZePjwIdRqNSwWC9577z0YDAbRaaRQvB1OIowcORK//vorbDYbmpqaUFhY\n+NpiFfU+fAyDulRRUYFt27YhOzsblZWVonPIA+zZswdFRUUIDw9HZWUlfvzxR0RFRYnOIgXj7XAS\nYdOmTbh58yZ8fHyQnp6OwMBAbNy4UXQWdYMry+Rkx44duHTpErRaLRwOBwoLC1FXV4fVq1eLTiMF\n8/HxgVqtht1uh81mw5QpU/DNN9+IziIF8/b2lgflVyRJElRDnsLf3x/p6elIT08XnUL/EYdlcnLy\n5EmUlpbCy8sLwMu9SOfOncthmdwqKCgIbW1t0Gg0WLNmDQYMGICAgADRWaRgvB1OPSkrKwsZGRlY\ntmxZl9+rVCqkpKRg3LhxPVxG/4Yv+JETrVaLgoIC+RCSv/76C4sWLeLLB+RW7e3t8PX1hd1ux/Hj\nx9HW1gatVsvDcMhtrFYr9u7di9OnTwMAZsyYgeXLl8PX11dwGSlRfX09IiMjUV1d3eX3jx8/xp49\ne7hVay/ElWVysnTpUiQnJ2PSpEkAgPPnz3NVmdzqxYsXWLp0KQoLC+Hl5YXk5GTRSaRgz549Q1FR\nEW7fvo1Ro0ahuLiYh0OQ20VGRgIAJk+e7PLPeHtzLOuNuLJMXXrw4AHq6+sBAFFRUQgJCRFcREq3\nePFi6PV6p2dIid40nU4HHx8fREdHo6qqCmFhYcjIyBCdRR7i1q1b2L17N27cuCFvkylJEsxms+Ay\ncoX/haEuXbp0CTU1NQBe/iX+8MMPBReR0vn5+UGr1WLatGnw9/cH8PJ3j0MMvWmNjY3yY2ULFizA\n/PnzBReRJ1m/fj1WrlyJrVu3Ij8/H0ePHoXNZhOdRd3gsExOuBsGiRAXF4e4uDjuRkBu9+rlZYC3\nvanndXR0YNq0aQCAwYMHY8WKFUhKSsKqVasEl5Er/FeCnHA3DOpJFRUVaG5uxsKFCwEA8+fPR2tr\nKwDgq6++EplGCtXQ0PDarhcdHR3ytSRJ+OOPP0SlkQfw9fWFzWbDsGHD8PPPPyM0NBTt7e2is6gb\nHJapS0+ePJF3IXjy5IngGlKy/Px87Nq1S75+/vw5jhw5AqvVinXr1mHWrFkC60iJrl69KjqBPNiG\nDRtgtVqRkZGB7777Dm1tbcjOzhadRd3gsExOuBsG9aTOzk6EhYXJ1xMmTIBKpYJKpYLVahVYRkT0\n5r06mTQwMBDbtm2Dw+FAWVkZ91fuxbgbBnWJu2FQT/n4449RUVHR5XcfffQR3xAnIkV4+vQpiouL\ncefOHbz//vtITU2F2WzG7t27MWzYMOzbt090IrnAlWVy4nA4cOHCBdTW1kKSJNjtdsycOVN0FinU\n2LFjUVxcjJSUlNc+P3ToEMaOHSuoiojozVq7di0CAwMxbtw4nDlzBseOHYOvry927tyJiIgI0XnU\nDa4sk5PNmzfjzz//RGJionx7aOjQodiyZYvoNFKglpYWpKWloW/fvhg9ejQA4MqVK+jo6EBeXh7v\nahCRImi1WnnLQpvNhpiYGPz+++/o16+f4DL6N1xZJifV1dUwGo3o06cPgJe7YSQkJAiuIqUKDg5G\nUVERzp07hxs3bkCSJMTGxmLq1Kmi04iI3ph/blno5eWFgQMHclB+S3BYJifDhw+HxWLBkCFDAAAW\niwXDhw8XXEVKJkkSpk6dygGZiBSLWxa+vTgsk2zZsmUAXr6EkJCQgKioKEiShIsXL8pv7xIREdH/\nj1sWvr04LJNsyZIlr11LkgSHw4Hz58/DaDQKqiIiIiISh8MyySZPniz/fPnyZZw4cQImkwlDhgxB\namqqwDIiIiIiMTgsk6yxsREGgwFGoxFqtRrx8fFwOBwoLCwUnUZEREQkBIdlkiUkJCA2Nhb79++X\nT1T74YcfBFcRERERidNHdAD1Hrm5uejXrx8WLlyIzMxMnD17VnQSERERkVA8lIScPH36FGazGQaD\nAdXV1ZgzZw5mzpyJmJgY0WlEREREPYrDMnXr8ePHKC8vh8FgQEFBgegcIiIioh7FYZmIiIiIyAU+\ns0xERERE5AKHZSIiIiIiFzgsExERERG5wGGZiIiIiMgFDstERERERC78D91FHnK1IsveAAAAAElF\nTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 141 }, { "cell_type": "code", "collapsed": false, "input": [ "usedTable = ListTable()\n", "usedTable.append(['Source','Number of neoblast transcripts','Number of transcripts clustered','% clustered'])\n", "for c in comboHeader:\n", " usedTable.append([c,commas(sources[c]),commas(used[c]),str(float(used[c]) / sources[c] * 100)[:4]])\n", " \n", "usedTable" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
SourceNumber of neoblast transcriptsNumber of transcripts clustered% clustered
Pearson2,1471,38364.4
Graveley4,0561,46035.9
Rajewsky7,6963,17241.2
Aboobaker82357569.8
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 64, "text": [ "[['Source',\n", " 'Number of neoblast transcripts',\n", " 'Number of transcripts clustered',\n", " '% clustered'],\n", " ['Pearson', '2,147', '1,383', '64.4'],\n", " ['Graveley', '4,056', '1,460', '35.9'],\n", " ['Rajewsky', '7,696', '3,172', '41.2'],\n", " ['Aboobaker', '823', '575', '69.8']]" ] } ], "prompt_number": 64 } ], "metadata": {} } ] }