+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true
+ },
+ "source": [
+ "# Explanations"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 95,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "starget = 'acba'\n",
+ "swrong = 'cdabcaca'\n",
+ "sinterleave = 'abcacbba'\n",
+ "ssubseq = 'aaccabab'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def show_subseq_md_table(short, long, table):\n",
+ " header = '| |' + '|'.join('{}<br />{}'.format('<br />'.join(str(long[:i])), i) for i in range(len(long) + 1)) + '|'\n",
+ " separator = '|:---:' * (len(long) + 2) + '|'\n",
+ " rows = []\n",
+ " columns = sorted(set(k[1] for k in table))\n",
+ " for r in range(len(short) + 1):\n",
+ " row = '|{}<br />{}|'.format(r, short[:r])\n",
+ " row += '|'.join('T' if table[r, c] else '.' for c in columns)\n",
+ " row += '|'\n",
+ " rows += [row]\n",
+ " return '\\n'.join([header] + [separator] + rows)\n",
+ "# return '\\n'.join(\n",
+ "# ' '.join('T' if table[i, j] else '.' for j in sorted(set([k[1] for k in table])))\n",
+ "# for i in sorted(set([k[0] for k in table]))) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 82,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ ". . . . . . . . .\n",
+ ". a a c c a b a b\n",
+ ". . . c c a b a b\n",
+ ". . . . . . b a b\n",
+ ". . . . . . . a b\n",
+ "AcCaBAb\n"
+ ]
+ }
+ ],
+ "source": [
+ "v, bp, t = is_subseq(starget, ssubseq, return_backpointers=True, return_table=True)\n",
+ "print(show_annotated_table(t, bp))\n",
+ "print(show_backtrace_s(bp))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 83,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "T T T T T T T T T\n",
+ ". T T T T T T T T\n",
+ ". . . T T T T T T\n",
+ ". . . . . . T T T\n",
+ ". . . . . . . T T\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(show_table(t))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 85,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "| |<br />0|a<br />1|a<br />a<br />2|a<br />a<br />c<br />3|a<br />a<br />c<br />c<br />4|a<br />a<br />c<br />c<br />a<br />5|a<br />a<br />c<br />c<br />a<br />b<br />6|a<br />a<br />c<br />c<br />a<br />b<br />a<br />7|a<br />a<br />c<br />c<br />a<br />b<br />a<br />b<br />8|\n",
+ "|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n",
+ "|0<br />|T|T|T|T|T|T|T|T|T|\n",
+ "|1<br />a|.|T|T|T|T|T|T|T|T|\n",
+ "|2<br />ac|.|.|.|T|T|T|T|T|T|\n",
+ "|3<br />acb|.|.|.|.|.|.|T|T|T|\n",
+ "|4<br />acba|.|.|.|.|.|.|.|T|T|\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(show_subseq_md_table(starget, ssubseq, t))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "| |<br />0|a<br />1|a<br />a<br />2|a<br />a<br />c<br />3|a<br />a<br />c<br />c<br />4|a<br />a<br />c<br />c<br />a<br />5|a<br />a<br />c<br />c<br />a<br />b<br />6|a<br />a<br />c<br />c<br />a<br />b<br />a<br />7|a<br />a<br />c<br />c<br />a<br />b<br />a<br />b<br />8|\n",
+ "|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n",
+ "|0<br />|T|T|T|T|T|T|T|T|T|\n",
+ "|1<br />a|.|T|T|T|T|T|T|T|T|\n",
+ "|2<br />ac|.|.|.|T|T|T|T|T|T|\n",
+ "|3<br />acb|.|.|.|.|.|.|T|T|T|\n",
+ "|4<br />acba|.|.|.|.|.|.|.|T|T|"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 99,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ ". . . . . . . . .\n",
+ ". . . a b c a c a\n",
+ ". . . . . c a c a\n",
+ ". . . . . . . . .\n",
+ ". . . . . . . . .\n",
+ "ACa\n"
+ ]
+ }
+ ],
+ "source": [
+ "v, bp, t = is_subseq(starget, swrong, return_backpointers=True, return_table=True)\n",
+ "print(show_annotated_table(t, bp))\n",
+ "print(show_backtrace_s(bp))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 100,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "| |<br />0|c<br />1|c<br />d<br />2|c<br />d<br />a<br />3|c<br />d<br />a<br />b<br />4|c<br />d<br />a<br />b<br />c<br />5|c<br />d<br />a<br />b<br />c<br />a<br />6|c<br />d<br />a<br />b<br />c<br />a<br />c<br />7|c<br />d<br />a<br />b<br />c<br />a<br />c<br />a<br />8|\n",
+ "|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n",
+ "|0<br />|T|T|T|T|T|T|T|T|T|\n",
+ "|1<br />a|.|.|.|T|T|T|T|T|T|\n",
+ "|2<br />ac|.|.|.|.|.|T|T|T|T|\n",
+ "|3<br />acb|.|.|.|.|.|.|.|.|.|\n",
+ "|4<br />acba|.|.|.|.|.|.|.|.|.|\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(show_subseq_md_table(starget, swrong, t))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "| |<br />0|c<br />1|c<br />d<br />2|c<br />d<br />a<br />3|c<br />d<br />a<br />b<br />4|c<br />d<br />a<br />b<br />c<br />5|c<br />d<br />a<br />b<br />c<br />a<br />6|c<br />d<br />a<br />b<br />c<br />a<br />c<br />7|c<br />d<br />a<br />b<br />c<br />a<br />c<br />a<br />8|\n",
+ "|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n",
+ "|0<br />|T|T|T|T|T|T|T|T|T|\n",
+ "|1<br />a|.|.|.|T|T|T|T|T|T|\n",
+ "|2<br />ac|.|.|.|.|.|T|T|T|T|\n",
+ "|3<br />acb|.|.|.|.|.|.|.|.|.|\n",
+ "|4<br />acba|.|.|.|.|.|.|.|.|.|"
+ ]
+ },