Skip to content

Instantly share code, notes, and snippets.

@lexnederbragt
Last active December 18, 2015 16:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lexnederbragt/5814241 to your computer and use it in GitHub Desktop.
Save lexnederbragt/5814241 to your computer and use it in GitHub Desktop.
Code belonging to the blog post 'Longing for the longest reads: PacBio and BluePippin Link: http://flxlexblog.wordpress.com/2013/06/19/longing-for-the-longest-reads-pacbio-and-bluepippin View the notebook here: http://nbviewer.ipython.org/5814241
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "PacBio_longest_subread_plots"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Code belonging to the blog post 'Longing for the longest reads: PacBio and BluePippin' \n",
"Link: http://flxlexblog.wordpress.com/2013/06/19/longing-for-the-longest-reads-pacbio-and-bluepippin \n",
"Download the raw notebook here: https://gist.github.com/lexnederbragt/5814241\n",
"\n",
"Released under CC BY-SA 2.0\n",
"\n",
"Lex Nederbragt, June 2013"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from collections import Counter\n",
"from matplotlib import pylab as plt"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following cell sets up the project, and allows for using the notebook on different datasets \n",
"Input files are filtered subreads. These are provided by default with software version 2.0 and higher. \n",
"For older version, reads need to be filtered and split into subreads."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dataset_name = 'some_name'\n",
"dataset_outfolder = 'path/to/some/folder'\n",
"\n",
"# older software versions\n",
"files1 = !find /path/to/rundata -name \"*filtered_subreads.fasta\"\n",
"# 2.0 and up\n",
"files2 = !find /path/to/rundata -name \"*subreads.fasta\"\n",
"\n",
"inputs = []\n",
"inputs.append([\"Dataset name 1\", files1])\n",
"inputs.append([\"Dataset name 2\", files2])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def N50(numlist):\n",
" \"\"\"\n",
"Abstract: Returns the N50 value of the passed list of numbers.\n",
"Usage: N50(numlist)\n",
"\n",
"Based on the definition from this SEQanswers post\n",
"http://seqanswers.com/forums/showpost.php?p=7496&postcount=4\n",
"(modified Broad Institute's definition\n",
"https://www.broad.harvard.edu/crd/wiki/index.php/N50)\n",
"\n",
"See SEQanswers threads for details:\n",
"http://seqanswers.com/forums/showthread.php?t=2857\n",
"http://seqanswers.com/forums/showthread.php?t=2332\n",
"\"\"\"\n",
" numlist.sort(reverse = True)\n",
" s = sum(numlist)\n",
" limit = s * 0.5\n",
" for l in numlist:\n",
" s -= l\n",
" if s <= limit:\n",
" return l"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def load_data(files, max_reads):\n",
" \"\"\"Parses the subreads fasta file and collects the length of the longest subread for each ZMW ('read of insert')\"\"\"\n",
" lengths = {}\n",
" i = 0\n",
" for fname in files:\n",
" with open(fname, 'r') as fh:\n",
" for line in fh:\n",
" line = line.strip().split()[0]\n",
" if line.startswith('>'):\n",
" i += 1\n",
" if i > max_reads:\n",
" break\n",
" [name, zmw, coord] = line[1:].split('/')\n",
" start, stop = coord.split('_')\n",
" read_len = int(stop) - int(start)\n",
" read_name = name + '_' + zmw\n",
" # add length if no entry yet, otherwise use longest length\n",
" # 'lengths.get(read_name,0)' returns either the previously recorded length for this read, or 0\n",
" lengths[read_name] = max(lengths.get(read_name,0), read_len)\n",
" return lengths.values() "
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def rel_cumsum(lengths):\n",
" \"\"\"Determines the lengths of the reads sorted from short to long,\n",
" and the fracttion of the cumualtive sum of reads at that length.\n",
" Needed for plotting \"\"\"\n",
" c = Counter(lengths)\n",
" total = sum(lengths)\n",
" csum = 0\n",
" cum_len = []\n",
" sort_len = []\n",
" for k in sorted(c.iterkeys()):\n",
" csum = csum + k * c[k]\n",
" cum_len.append((total_len - csum)/float(total_len))\n",
" sort_len.append(k)\n",
" return sort_len, cum_len"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Load the data:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"max_reads = 1E30 #allows for loading a subset by using a smaller number\n",
"all_lengths = {}\n",
"for indata in inputs:\n",
" libname, fnames = indata\n",
" print libname\n",
" lengths = load_data(fnames, max_reads)\n",
" all_lengths[libname] = lengths"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Metrics:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"N50s = {}\n",
"print \"Library\\t# of reads\\tAve. length\\tLongest subread N50\\tLongest\"\n",
"for indata in inputs:\n",
" libname, fname = indata\n",
" lib_N50 = N50(all_lengths[libname])\n",
" N50s[libname] = lib_N50\n",
" print \"%s\\t%i\\t%i\\t%i\\t%i\" %(libname, \n",
" len(all_lengths[libname]), \n",
" sum(all_lengths[libname])/len(all_lengths[libname]), \n",
" lib_N50,\n",
" max(all_lengths[libname]))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Library\t# of reads\tAve. length\tLongest subread N50\tLongest\n",
"Regular library\t693275\t3009\t4041\t22298"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Blue Pippin library\t325407\t6045\t8820\t25931"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
}
],
"prompt_number": 32
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plotting length distributions:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"num_points = -1 # '-1' for all\n",
"for indata in inputs:\n",
" libname, fname = indata\n",
" y,binEdges=np.histogram(all_lengths[libname][0:num_points],bins=100)\n",
" bincenters = 0.5*(binEdges[1:]+binEdges[:-1])\n",
" plt.plot(bincenters,y,'-', label = libname)\n",
"legend()\n",
"plt.xlim(0,20000)\n",
"plt.xlabel('Longest subread length')\n",
"plt.ylabel('Count')\n",
"plt.savefig(dataset_outfolder + '/' + dataset_name + '_length_dist.pdf')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAZwAAAEMCAYAAADwJwB6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xlc1VX++PHXRRFFEVkUUDZxYXEFZUlE0SzNxjSdUovS\npDRbLJfGFselmvrV1Dhq49Z8KZMxKidbnNJSw6XkguYOIuSCIiAIypILy/n98ckrKC7gXVjez8fj\n8wA/937O530+3e6bcz7nc45OKaUQQgghTMzK0gEIIYRoHCThCCGEMAtJOEIIIcxCEo4QQgizkIQj\nhBDCLCThCCGEMAuTJZzy8nICAwMZMWIEAEVFRYwcORJPT09GjRpFcXGx4b2LFy+mS5cuBAQEsGPH\nDsP+lJQUgoKC8PHx4bXXXjPsLy0tJTo6Gi8vLyIjI8nOzjZVNYQQQhiJyRLOokWLCAgIQKfTAbBs\n2TI8PT1JS0vD3d2d5cuXA3DmzBmWLl3K5s2bWbZsGdOmTTOUMXPmTGbPnk1SUhJbt25l165dAKxb\nt47z58+TkpLCsGHDePPNN01VDSGEEEZikoRz6tQpvvvuO5588kmuPFeamJhIdHQ0NjY2TJo0Cb1e\nD4Ber2fYsGF4enoycOBAlFKG1k9qaipjx47FycmJ0aNHVzkmKioKW1tbJk+ebNgvhBCi7jJJwpk+\nfTp///vfsbK6WnxSUhJ+fn4A+Pn5kZiYCGjJw9/f3/A+X19f9Ho96enptGvXzrA/ICCAhIQEQEte\nAQEBADg6OpKTk8OlS5dMURUhhBBG0tTYBa5fv5527doRGBhIfHy8YX9NZtC50g1XmVLKsF8pVaW8\nG5VdXTlCCCFuzRSznhm9hfPLL7/wzTff0LFjR8aPH8+WLVt47LHHCA4OJiUlBdAGAwQHBwMQGhpK\ncnKy4fjDhw8THBxM586dycnJMexPTk4mNDT0umPy8/NxcXHBxsam2niuJCfZ7nybN2+exWNoKJtc\nS7medXkzFaMnnLfeeouTJ09y7Ngx4uLiGDx4MKtXryY0NJSYmBguXLhATEwMYWFhAISEhLBx40Yy\nMjKIj4/HysoKOzs7QOt6i4uLIy8vj3Xr1lVJOLGxsZSUlLBy5UpDWUIIIeoukz+Hc6Vba+rUqWRk\nZODr60tmZiZPP/00AC4uLkydOpXBgwfzzDPPsGjRIsOx7733Hu+++y7BwcFERETQt29fAB588EHs\n7e3x9/dnw4YNzJkzx9TVEEIIcYd0ypTtJwvT6XQmbR42NvHx8URGRlo6jAZBrqVxyfU0LlN9d0rC\nEUIIUYWpvjuNPkpNCGEcjo6OFBQUWDoM0YA5ODiQn59vtvNJC0eIOko+v8LUbvQZM9VnTybvFEII\nYRaScIQQQpiFJBwhRL0xf/58HnvsMaOVFxkZyf/93/8B8J///IehQ4caXrOysuLo0aNGO5eQhCOE\nqAVvb29sbW2xs7Ojb9++vPrqq1y8eNHk5zX2dFU6nc5Q5qOPPsrGjRuNWr6oShKOEKLGdDod69ev\np6ioiI8//phPP/2UtWvXmvy8d3Iju6KiwoiRVFVeXl6j95eVlZkokrpNEo4Q4o50796doUOH8u23\n3xr2/fbbb/zlL3/By8uLp556qsp8ibm5ufzlL3/B1dWVBx98kFmzZhm6yeLj4/Hw8KhSvre3N1u2\nbKn23A899BBubm54eHgwY8aMKl1gEydOZPr06Tz88MM4OTlVmUy4Oh9//DERERFV9m3bto1evXrR\nrVs34uLiDAnv448/pn///sybNw8vLy8WLFjA0aNHGTx4MM7OzvTs2ZN33nmnykKT3t7eLF26lH79\n+mFvb897773Hn//85yrnmzZtGi+++OJN46zPJOEIIWrlypfv3r172bBhA/379we0v/b79etHQEAA\nBw8eJCIiosq9kalTp5KTk8PevXsZM2YMK1asuGlX2c1eu//++0lPTycxMZG8vDzmzp1b5fUPP/yQ\nBx98kJycHMLDw2tcx5UrVxIbG8uyZct45ZVX+OGHHwyvJSYmUlpayv79+3n11VdRSvHaa6+RlZVF\nbGwsn3/+OXFxcVXq8a9//Yt33nmH/Px8oqKi2LBhA+fPnwe0Vs9nn33GhAkTahxnfSEJRwhRY0op\nRo0ahZ2dHUFBQQwdOpTnn38egC1bttCrVy8mTpyInZ0djz/+OM7OziQlJVFWVsamTZuYN28erq6u\nREVFERgYWOs4Jk6cSMuWLXFzc2Pu3Ll89913VbrOQkNDGT9+PE2bNr3hjPI38+STT9KjRw8GDBjA\n+PHjWb9+veG1pk2bMn/+fOzt7WnevDmdOnXi7rvvxtramp49ezJ16lS+/vrrKuWNGzeOiIgIbGxs\ncHV1JSIigi+++AKADRs20LZt2zu6HnWdJBwh6imdzjhb7c6t4+uvv+b8+fN89dVXrF69mr179wKw\nadMmtm/fjoODg2FLT09n27ZtpKSkUFFRgY+Pj6GsPn361PrezHvvvceQIUNwdHQkODiYc+fOceLE\nCUOMV2aYr63evXsbfg8MDGTnzp2Gf/fq1YtmzZoZ/l1cXMwLL7xAcHAw9vb2TJ8+nf3791cp79p4\nJkyYQGxsLACxsbFGHYFXF0nCEaKeUso4252wsrLigQceYNq0acycOROAwYMHExkZSUFBgWErKipi\n5syZ+Pn5XTfcePfu3YZusw4dOpCfn2+4CZ+Xl8epU6eqPbder+cf//gHCxcuJCsri6SkpD+uy9VK\nNWnS5I7qt2fPHsPvv/76K/369TP8u2nTqjOD/etf/yI1NZXPP/+cc+fOsXDhwusGKlx7zMiRI9m/\nfz8HDx7kf//7H48++ugdxVvXScIRQtyxWbNmkZCQgF6v55577uHAgQN88sknFBQUcPHiReLj48nM\nzMTa2pohQ4bwxhtvkJOTw5o1awwtI4AuXbrg7OzMRx99RG5uLvPmzbvhPZzMzExatmxJu3btyMrK\nuu7+jTGmZomJieHgwYNs376dzz77jD/96U83fO/p06dxcHCgXbt2JCUl8cEHH9yy/BYtWjBmzBge\neeQRQkNDcXd3v+OY6zJJOEKIO+bs7MyECRN45513sLKyIj4+ntTUVPr06YOnpyfvv/++4a/9pUuX\n4uTkRK9evVi7di2PPvoo9vb2hrKWLVtGTEwMISEh9OzZs8qXcOXnZkaNGsXgwYPp3bs3I0aMYOzY\nsVWSU+X33o5r36/T6Zg8eTKPPvooU6ZM4c033+See+65YdnTp0/nwoULeHl5MXPmTJ555pnbOv+E\nCRM4ePBgg+9OA5m8U4g6q7F8foODg3nllVcYPXq0pUOxiIyMDPz9/cnJyaFVq1ZmPbe5J++U5QmE\nEGa1a9cuHBwccHV15ZNPPuHAgQPcfffdlg7LIioqKnjrrbd4+umnzZ5sLEG61CxkyxbIybF0FEKY\nX3Z2NoMGDaJ9+/bs2LGDjRs3VulSayxKSkqwt7cnOTmZ1157zdLhmIV0qZmZUvD22/D66zByJHz2\nmaUjEnVVXfz8ioal3q+Hc/HiRUJDQ+nduzdhYWEsXLgQ0GZ5dXd3JzAwkMDAQL7//nvDMYsXL6ZL\nly4EBASwY8cOw/6UlBSCgoLw8fGp8hdAaWkp0dHReHl5ERkZSXZ2trGrYRKXL8OkSfDf/8LBg5CQ\nANu2WToqIYQwE2UCJSUlSimlLl68qLp166aOHDmi5s+fr95///3r3puTk6N8fX3ViRMnVHx8vAoM\nDDS8dt9996m4uDiVl5enwsPDVVJSklJKqc8++0yNGTNGlZSUqLfffls9++yz1cZhourVSn6+UoMG\nKfXAA0oVF2v7Pv1UqcBApcrKLBubqJvq0udXNEw3+oyZ6rNnkns4tra2gPbkbVlZmWFKCVVNE02v\n1zNs2DA8PT0ZOHAgSinDhHepqamMHTsWJycnRo8ejV6vNxwTFRWFra0tkydPNuyvq37/He6/HwIC\n4MsvoWVLbf/YsWBrCx9/bNHwhBDCLEyScCoqKujVqxcuLi4899xzeHp6ArBkyRLCwsJ45513KCoq\nArQJ8Pz9/Q3H+vr6otfrSU9Pp127dob9AQEBJCQkGI4JCAgAwNHRkZycHC5dumSKqtyxsjIYPx58\nfGDxYqj84LNOB4sWwZw5UFhouRiFEMIcTDIs2srKin379nH8+HGGDx9OeHg4U6dOZe7cuRQWFvLS\nSy+xYsUKZs2adcMbVtdSShn2K6WqHFddGVfMnz+fzZthwAC4555IIiMj77yCt0kpePZZuHABvvgC\nrKpJ7336wH33wZtvwrvvmi00IYQwiI+Pv+XyDUZhko66SmbOnKmWLVtWZd/evXtVv379lFJKffPN\nN2ratGmG13r16qUKCwuVUkp17NjRsP+9995TH3zwgVJKqRkzZqgvv/xSKaXU2bNnVZ8+fao995Xq\neXgodeyYcepTEwsWaPdo/qjODWVlKdWmjVI5OeaJS9QPZvjf02QmTJig5syZY9ZzvvXWW+rJJ580\nSlndunVTW7durdWxOp1O/fbbb0oppZ5++mn1xhtvKKWU+umnn5S7u7tR4jOWG33GTPXZM3qXWl5e\nHufOnQPg7Nmz/PDDD4wcOZKsrCxAW/NhzZo1DB8+HICQkBA2btxIRkYG8fHxWFlZYWdnB4Cfnx9x\ncXHk5eWxbt06w0yroaGhxMbGUlJSwsqVKwkLC7tpTA4OUFBg7Jre3L59sHw5fPcd/FGdG3J1hXvv\nhWtmMheizqq8xLSPjw/Tpk3jzJkzhtdrOq3M7fr4449p0qQJdnZ2uLq6Mn78eLZu3QrAK6+8wocf\nfmiU8xw8eJABAwbccTnLli1jzpw5RoioYTB6wsnKymLw4MH06tWLRx55hFmzZuHm5sbs2bPp2bMn\nYWFhlJaWMnXqVABcXFyYOnUqgwcP5plnnmHRokWGst577z3effddgoODiYiIoG/fvgA8+OCD2Nvb\n4+/vz4YNG275H9QSCWfNGpg4UUsmt2P0aG1AgRD1QeUlpnfu3MnJkydZsmRJlfcoEz1DFB4eTlFR\nEWlpaXTq1Imnn37aJOextJouiV0vlq02SbupjrhSvVGjlFq71nznLS/XuvH277/9YwoLlbKzU6qg\nwHRxifqlLv/v6e3trTZv3mz496efflrlkYaJEyeqv/71r0oppT766CPVv3//KsdX7nYqLS1Vn332\nmRo0aJDq1auX+ve//60uXbpU7XmvLev06dNKp9OptLQ0NW/ePBUVFaWUUurYsWNKp9OpuLg41bVr\nVxUSEqK+//57w3Hz5s1TY8eOVU8++aRycXFRkydPVhkZGYbXvby8DPWbN2+eGjdunHr22WeVi4uL\neuihh1RycvINr03lulXuWrzSpbZkyRLl5eWl7r33XpWQkGA4bsKECerFF19UDz30kHJ0dFSbNm1S\n69evV71791atW7dWQ4YMUatWrTK8/0odP//8c9W9e3c1cOBAdf/996slS5ZUiadHjx7qq6++qjbW\nG33GTPXZaxRT25i7hfPLL2BvDz163P4xdnYQGQmVFhQUok5Tf7RgMjMz+c9//lPrATlLly5lxYoV\nLFmyhP/+97/ExsayatWqWx53/vx5lixZQvfu3encuXO174mNjWXDhg288sorPPLII6Smphpe+/LL\nL/Hz8+PAgQO0aNGChx9+2PDatd2BX375Jb169SIlJQV7e3veeuut26rbtV2LOTk5JCYmkpCQwPjx\n47n77rspKSkxvF55Sez+/fvTqlUrYmNjyc/PZ9asWTz33HOkp6dXOceaNWv4+uuv2bBhQ5UF3QD2\n7dvH6dOnuf/++28rXlNrFAmnTRv447aSWaxZow2FrqkxY7RZCISo69QfS0w7ODjg5eXFsWPHan2v\n4rPPPuONN96gW7dudOrUiRdeeIGvvvrqhu9PSEjAwcGBnj17kpOTc9P7NtOnT6djx46MGjWKYcOG\nVVki2s3NjZkzZ9K2bVv+9re/sXfvXvLy8qotx9fXl6eeegoHBweio6PZtGnTbddPVepaLCsrY/78\n+bi6ujJx4kR69uzJhg0bDK9fuyT2wIED6datG02aNGHo0KGMHDnyumWrZ8yYgY+PD82bN2fEiBEc\n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\nAElFTkSuQmCC\n"
}
],
"prompt_number": 30
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plotting fractional distribution:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for indata in inputs:\n",
" libname, fname = indata\n",
" total_len = sum(all_lengths[libname])\n",
" x, y = rel_cumsum(all_lengths[libname])\n",
" plt.plot(x, [100*i for i in y], label = libname)\n",
" plt.plot([N50s[libname],N50s[libname]],[0,50], ls='dashed', color = '0.75')\n",
" plt.plot([0,N50s[libname]],[50,50], ls='dashed', color = '0.75')\n",
"legend()\n",
"plt.xlim(0,20000)\n",
"plt.title('Fraction of bases at different length cutoffs')\n",
"plt.xlabel('Minimum length')\n",
"plt.ylabel('Percentage of total bases')\n",
"plt.savefig(dataset_outfolder + '/' + dataset_name + '_cumul_length_dist.pdf')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nevQAoF27dhw4cIDLly9z69Ytfv755xRzTZo0CUtLSw4dOsTz58/p3r27pu13Z9B9bDs1atTog9eW\nWa6urlSqVCnZa3rx4gW///675jHvMgE0btyYkiVLEhERkezxW7duBdIu6vny5Uv3eyArbdnb2xMW\nFsarV6809yXdTinlyMhZWK6uroSEhJCQkPDBsnLlyhEREaG5nfRvlVLbGX2vv5+zePHizJo1iwcP\nHvDdd9/Rv39/vTs9O7vJAqJDkZGRCCGwsLAgOjqaKVOm8Pr1a83yPn368Ndff7F7927i4+MJDQ3l\n6dOnADRo0IBTp06luN4SJUpgb2/PlClTePz4MStXruTSpUu0adMGyNhZLq1ateLSpUt4e3vz+PFj\npk6dir29veZsorTWJ4QgICCAnTt3cvPmTebMmYO7uzsA9+/fx9jYmFKlSvHw4UO+++47zfPevn3L\n6tWref78OaD+NlikSBEAevXqxebNm9myZQuxsbHExsayc+dOYmJiuHbtGoGBgbx+/ZqCBQtSqFAh\nzfPe9+DBA0qUKIGpqSnbtm1j27ZtmmWWlpaUKlUq1W0M0L59exYvXszFixc5evQoGzZsSMcWTZmt\nrS0mJibMmTOHR48e8fbtW06ePKk5Nfv9bWxmZkazZs00Xz4SEhK4ePGiJm9af+MGDRok+7D8mKy0\nZWFhQc2aNfHy8uLJkyf89ttvPHr0SLO8bt26PHnyhIcPH2ruy8j7s1q1alhaWvL111/z4MEDoqOj\nCQkJAaBly5bs37+fsLAwTp06xapVqz66DTL6Xn8/54YNG7h37x6JiYkYGxtjbGycrOjnBbKAZKP3\nv7HUr1+fUaNG4erqSvPmzalVq1ayi7c6derE7Nmz+fPPPylevDjDhg3TfJObNGkSc+bMwdzcnI0b\nN35wvcXq1aspXLgw9vb2BAUFERAQgJGRkSbH+1lS+9ZnbGxMYGAghw4dwt7eHiMjI1avXp2u575b\nNmbMGObNm4eTkxMuLi588803AHTp0gVXV1fq1auHu7s7vXv3TrYuPz8/KlSogJWVFcHBwfz6668A\nmJubs3fvXg4ePEjVqlWpUqUKPj4+ALx+/ZrJkydTsmRJGjZsiJmZGePHj08x29y5c/H398fKyoq1\na9fy6aefJsv97bffMmTIEMzNzTUfSkkNHz4cT09P3N3dmTRpEp9//nmq2yI923zLli28ffuWli1b\n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\nQvQ+CwAAAABJRU5ErkJggg==\n"
}
],
"prompt_number": 29
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment