{ "metadata": { "name": "", "signature": "sha256:4a11832f373de6a2c6b5583615e4e4c4cf0ba900f147579064e12a087f6b3133" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division, print_function\n", "\n", "import os\n", "import time\n", "import subprocess\n", "\n", "import numpy as np\n", "import scipy as sp\n", "\n", "from tools.plot import quicktitle\n", "from tools.radians import xy_to_rad_vec, circle_diff\n", "from tools.filters import quick_boxcar\n", "from tools.images import tiling_dims\n", "\n", "from trajectory import *" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load and verify data traces" ] }, { "cell_type": "code", "collapsed": false, "input": [ "os.chdir(datadir)\n", "LCO_f = np.load('LCO-trace.npy')\n", "LCO_x = np.load('LCO-trace-x.npy')\n", "VCO_f = np.load('VCO-trace.npy')\n", "VCO_x = np.load('VCO-trace-x.npy')\n", "print('All data loaded!')\n", "print('LCO matrix:', LCO_f.shape)\n", "print('VCO matrix:', VCO_f.shape)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "All data loaded!\n", "LCO matrix: (128, 30000)\n", "VCO matrix: (9, 30000)\n" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "assert np.all(LCO_x == VCO_x), 'position traces were not the same!'\n", "print('Trajectory verification passed!')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Trajectory verification passed!\n" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prepare matrices for pseudoinverse" ] }, { "cell_type": "code", "collapsed": false, "input": [ "L = LCO_f.T\n", "V = 1 - VCO_f.T\n", "print('L matrix:', L.shape)\n", "print('V matrix:', V.shape)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "L matrix: (30000, 128)\n", "V matrix: (30000, 9)\n" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compute pseudoinverse" ] }, { "cell_type": "code", "collapsed": false, "input": [ "Lplus = sp.linalg.pinv(L)\n", "print('L-inverse:', Lplus.shape)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "L-inverse: (128, 30000)\n" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compute weight matrix" ] }, { "cell_type": "code", "collapsed": false, "input": [ "W = np.dot(Lplus, V)\n", "print('Weight matrix:', W.shape)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Weight matrix: (128, 9)\n" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "import matplotlib.pyplot as plt\n", "from tools.colormaps import diffmap" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "plt.pcolor(W,cmap=diffmap(mid=-W.min()/(W.max()-W.min())))\n", "plt.axis(\"tight\")\n", "plt.colorbar()\n", "plt.xlabel('VCO')\n", "plt.ylabel('LCO')\n", "f = plt.gcf()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEMCAYAAADUEk3/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXt4lfWV7z9fEgghBhEod0QOBRURb1W8QrTUihatbU8v\nM1bHcXzaOmo77WnrrRbPTG21T2s77Tj1dLS1jlovta1WrWI1iDNWKV4Q0YIMIKKAiGAaQshlnT/2\nhsa4E2Ky92/ljevzPHmy95t37+8vOztrr3f91kVmRhAEQZB9+nkvIAiCICgOYdCDIAj6CGHQgyAI\n+ghh0IMgCPoIYdCDIAj6CGHQgyAI+ghh0IMgCEqIpDJJT0u6p8DPaiRtzf/8aUmX9USrvCcPDoIg\nCHbLF4FlQHUHP19gZqcWQyhTBl1SVEEFQdBlzEw9efy7tTnt9SSNA04GvgV8uSOZ7q3unWTKoAOs\nXp3epl977Ty+/vV5yXWvuiq97qZN8KMfzeOCC9Lq3nLTN5h3+eVJNQEu+sa3uOiiecl1r7xyHl/7\nWlrd4eVbmPed7zDvoouS6lJRwbx/+RfmXdajaMK7RoMGFeV5+vXrms1pbS1ol68BvgoM7uBhBhwt\n6VlgHfB/zGxZN5YJZNCgT2hemVzzjTdgxYq0muPGQVMTNDSk1Z3yu+8zbPnjTPnd95PqvrGljOWr\n+ifV9GTQmhcYvvDXSTVXTj+dzdsGsvKNIUl1R42CHdaf+tbKpLrFol8HO42trbWY1Xb4OEkfATaa\n2dOSajo47SlgvJltkzQH+A0wpbtrzZxBD4IgSElZWUfHa4CaXfcbG69of8rRwKmSTgYGAoMl/cLM\nztx5gpnVtbl9v6RrJQ01s83dWWv2DPpbbyWXPOPDBzBj3Lq0oq2tnHrkVMa2rk0q+5NBX+atAw7l\nJ4NqkurOnVvLhAlJJQE4adYMhvSvT65bc/zxucuwhJSXw9FH11Ce+L++qrKVE2fPpKqyNa1wkejq\n69XY+Pb7ZnYJcAmApFnkwilntj1H0khyXrxJOgJQd405+Qd397HJkWT25Y72FUrHok9/L7lmVVVy\nSQCmfu0jLrqLvvk7F90993SR5eGH02v2d4poHXqol66KsilaXd01G1lX17Fe3qB/xcxOlfQ5ADO7\nTtI/Al8AmoFtwJfN7I/dXW/2PPQgCIKEdBRDfzeY2QJgQf72dW2O/xvwbz1XyJE5D33+/PTrnX1E\n+jBPnTraFC8tTU0usmzc6KPrEeYBqLzl+vSiZ5+dXhPYuMmnfnHkyOJ46EOHds3mbN7cc72eEh56\nEARBJxTDQ09FyQy6pBuAU8gF/A/MH/su8BFgB7ASONvMtuZ/djHw90ALcKGZPVjoeYcNK9WKO2bV\nG+m9Za830ahRPrqTJ/volslpo87hF25s8nlTee1TFIssGfRSLvVnwEntjj0IHGBmBwHLgYsBJE0F\nPgVMzT/mWkkZehmDIOir9OvXta/eQMk8dDNbKGmfdsfmt7n7BPDx/O3TgFvNrAlYLekl4AjgHbu9\n9ekzzBg/Pr3m8OHpNQG/YLbHpRfQ2NRBknGJqRgxIr1ma+IqtTwtA7JZULQTr+yg7uAZQ/974Nb8\n7TG83Xi/Aowt9KBjH/9uiZdVgElnpNdcsyO9JsDmbqfA9gwng+7GmWfu/pxic9996TWBsooKF91i\n0Vu8767gYtAlXQrsMLNbOjktO+k3QRD0WcKgd4KkvyPXfeyDbQ6vA9oGNsblj72Ds5b+NeZy0EE1\nHHxwTdHX2J4TXl9Sco13MGBAek3ggY2HuOh++NW0FbE7qRg61EV31W1PJtcc01Hz1hJTYS1JdGpr\na6ldsKDoz5slg17SPPR8DP2eNlkuJwHfA2aZ2aY2500FbiEXNx8LPAS839otTpL94Q/pHfcThr+H\nDPqa/Vx0PzzVx6DjZdA3pi8FHjMmuSQAFeVpDHp7VF5elDz0yZO7ZnNWrOjDeeiSbgVmAcMlrQW+\nSS6rZQAwXxLA42Z2npktk3Q7uSbwzcB57Y35ThK3v8gx6YDkklvqfDbrPly5xkXXa3jWliafHgse\nXp+bpylXG9djOmrO1RspZZbLZwocvqGT868ErizVeoIgCLpDlkIumasU3X//9JotG95MrtmMU97i\n/fe7yK495fMuulVOdUUeiR87nBKndmR8dHHq7pQ9IUNLzbF9u4Noa/rdpOE76nZ/Uin41a98dJ0M\n+tD+Tq/zg/em1zzuuPSaAIN9+hIVi/DQgyAI+ghh0EtI//+qTS/qkR4waVJ6TWDJ9+bv/qQSMH2U\nU5vHlYkHl+xk1qz0mm+mDx0CPvGlIhKbokEQBH2E8NBLSeppzcCWBMVL7RnS6uOxTp/mlGLW2Owi\nWz/eJ+/eY+/5Eyf4eMoNlT65/sUiDHoQBEEfIQx6CWk889zkmlvXJ5fk1Vd9WrxNLV/uous1RHXV\nmwV7wJWcT/z6b5Nr/vTNm5NrAnzgAy6yRSO6LZaQisb04+AmbEof5nGb+PCnV1xk104+wUV32rDX\nXHQ3XpPeuJ7pNGii1SnXv1iEhx4EQdBHCINeQq6/I32RwjlnTk+uubnO5zpv6PT0vyvA+L18Gjih\nkS6y655NrzkCp+El1U5tHotEGPQgCII+Qhj0EnLOCavSi25P31dl6FAfD33jRqceMm/4yHoNSnKp\n8TnI529b35Ahi1iAKCwqJTfdlF7zssvSa27atPtzSsCIVStddFni0HMe4CMfcZE9YYZDf5MWnx77\nVa0Og4CLSHebc0kaCCwAKsi1Df+tmV1c4Lx/BeYA24C/M7Onu73W7j4wCILgvUB3Qy5mtl3S8Wa2\nTVI58JikY83ssZ3nSDqZ3DCfyZJmAP8OHNndtWbOoK875/LkmmM9rhid8rLrps5w0W2c5KM7vLrR\nRXdLQ/qqzSEDnTaeBw3y0S0SPYmhm9m2/M0BQBnQfgr7qcCN+XOfkDRE0kgz29AdvWwHt4IgCEpM\nWVnXvgohqZ+kZ4ANwCNmtqzdKWOBtvMXXyE3U7lbZM5DHzu0Ib2og6RXNUb1/LtcdF+b9jEX3eED\nfDz0IQt+n170+OPTa0K2dhUL0JGHvmFDLRs31nb6WDNrBQ6WtCfwgKQaM2v/oPYNlLo9ODlzBj0I\ngiAlHRn00aNrGD26Ztf955+/osPnMLOtku4FPgDUtvnROmB8m/vj8se6ReYMemO/yuSaFaT34tZt\nTv97Aow6zcdTfuF3LrJUVflM0xnrMe3caQbdukanVNgi0d0YuqThQLOZbZFUCXwIaG/17wbOB34p\n6UhgS3fj55BBg17xzBPpRR0q3caOGpVcE+CW23xanf7Np50afqxyqGsAzrv+sOSa1168dvcnlYCx\nXsNLikQPmnONBm6U1I/cfuVNZvYHSZ8DMLPrzOw+SSdLegmoB87uyVozZ9CDIAhS0oO0xeeAQwsc\nv67d/fO7p/BOsmfQ99orveZYhxarLT4pZh4vLwBr1vjoOv3C1865J71o87T0mtBnN0V7I9kz6EEQ\nBAkJg15C1g+eklyz3mHAhZenPM3JiWPM3j66Tt7jtWvnJtece3BySQAq25fSZIww6EEQBH2ELEWM\nSmbQJd0AnAJsNLMD88eGArcBE4DVwCfNbEv+ZxcDfw+0ABea2YOFnnfUovSxx4bZ6b0prykvQxt9\nJvg07BjtoltZ59Mj/LyZDrp7vreugopFeOg5fgb8CPhFm2MXAfPN7GpJX8/fv0jSVOBTwFRypbAP\nSZqSr7J6G00npTeumxxCLkOdBqU3DfcxrP28xpQ5DV9oqB6RXLOyuS65Zk7Yp6aiWHS326IHJfvs\nMbOFQPuuz7sa0eS/fzR/+zTgVjNrMrPVwEvAEaVaWxAEQVfp169rX72B1J89bbuIbQB2zv8aA/yx\nzXmvkPPU34HHC+dR4+P1Bvn5z310Tz/dR5cqH+/x/nvTa37sqL+kF4VsubgFyFLEyO2VNjOT1FkT\nmoI/u+KKebtuz5pVQ01NTXEXFgRBJql99FFqH3206M/bW7zvrpDaoG+QNMrM1ksaDbum1na5Qc1R\nR83bdXvHDniw4NZpcZlzmMMGllPc8bLLfGLK5/yNR0tLqG/2eZ3//GcH0TlDHERhS2Oa1/jgGR/m\n4Bkf3nX/iiuvLMrzZsmgp17q3cBZ+dtnAb9pc/zTkgZImghMBp5MvLYgCIJ3EDF0QNKtwCxguKS1\nwOXAd4DbJZ1DPm0RwMyWSbodWAY0A+eZWcGQi4u3PCJ9RoJX6f9rLznNf2zy+X2rBvt46EcdlV4z\nlafcnizFoAvRW4x1VyiZQTezz3Two9kdnH8lsPtrJIcSygaHaEBluU8e3+IXfUbfHTZpi4sub73l\nIrtoUfq2vcOduthOm+qVk1ocetBtMTnZ3n4OgiAoMeGhl5At9ek/Lofg4D3WN6fXBA6b6PXuddKt\nSD+sGeCrn09f5PPiOp8N77r6DFnEAoRBD4Ig6COEQS8hQ8ocypf7pb8qqCvzSTFzqoTnxRd9dPeb\n7LMZ6zEpaT+Pvv5AfT+nN1WRyNKmbuYMehAEQUrCQy8hdaT/tB80MLkk5T7zfGGtz9zJ/Sb5zFBt\nbPZJYVjTb7/kmoOdMlKrfBKnikYY9BJSvXFlcs2WfSYl13R7E40fv/tzSoBT2j2tPnvPLlMNq5qc\nUkPLfTaei0WWWtFkaKlBEATpCQ+9hCzekt5bPqwuvWdTNsRnU/Suu1xkmTHDR9ejCBig/xvpm+yv\nafQJa02Y4CJbNGJTNAiCoI8QHnoJOWxUwSaMpWWwwxSfTZvSawIfW3Xj7k8qBXMv9NF1qusefUh6\nb/m1hS8l1wSgZaKPbpHIkkHP0FKDIAjS091ui5JukLRB0nOFnldSjaStkp7Of13W07VmzkP36JS1\ncVP6z70Rw9I3IQO4Z8pXXHTnvpw+ewmgbkT6PRmA//7v9JqreH96UWBia5OLbrHowUVcobnK7Vlg\nZqd2W6EdmTPoi7emf1OOT98YDyQHUcfLy332cZGtxidfsnpA+k3Rxet9KkVHjcpQu8ICdPd/wswW\nStpnN6cV9R89Qi5BEASdUMIBFwYcLelZSfdJmtrTtWbOQ/coyKhzaB9TXe3zWTvRaf+qqdUnN8zr\niqR5ePo38nSnFM3t2310i0VH75Hnn6/l+edre/LUTwHjzWybpDnkJrhN6ckTZs6gB0EQpKQjg37g\ngTUceGDNrvt33HHFu3peM6trc/t+SddKGmpmm7u1UDJo0D2mB+29d3pNL6b+9ts+whc6pS06uegP\n1qYfBzdnpk8zl/4ezZCKSKkKiySNBDaamUk6AlBPjDlk0KAHQRCkpLuf+QXmKn8T6A9gZtcBnwC+\nIKkZ2AZ8uqdrVQezmHslkuyPf0y/3hn7O8yd3GOP9JoAW3waOK1rGOqiW+kzN5mh3/5qetGrrkqv\nCeBkY1Rejpn1KItEkt13X9fWf/LJ6rFeT8mch17vcNW4dmv6vMURTg3qfr/Qx7CedoLDzjO49XZt\nuvK7yTX7Nzj1zx2Y7ZBLlipFM2fQgyAIUhLNuUpIa2t6zTFj0mtu3ZpeE+C0uQ4vMLDWaYBxtVMf\n9ldeSa9ZXe1zNTLU56KvaISHHgRB0EcIg15CZg94NLlmCzOTaw6t9ul/sWSpT5n29AN8XOW6bT7X\n08OHu8i6UF3ukGtcRMKgB0EQ9BHCoO8GSRcDZwCtwHPA2UAVcBswAVgNfNLM3plDN21asnXuxCNu\nX+Yhilsbdrf6cK+48vLl6TWn9KiovPu0DHDKDS0STi3zu0Vyg57vPnYusL+ZNUq6jVxC/QHAfDO7\nWtLXgYvyX2+jviL9DkuDwwblXnv55C2ecLhP+mDLQJ9NUa/OritWpNecPj29JmQrS6QQWfLQPZb6\nFtAEDJJUDgwCXgVOBXaOy7kR+KjD2oIgCN5GCbstFp3kHrqZbZb0PeBloAF4wMzmSxppZhvyp20A\nRhZ6fNW3Lkm00r9S/6Urk2uWebmOLT6bk2XbfYpeypyKXj7+8fRuq8dgagBG+QynLha9xVh3BY+Q\nyyTgS8A+wFbgDklntD0n36ymYL3tvIULd92u2XtvarI+UjwIgqJQW1tLbW1t0Z83SyGj5L1cJH0K\n+JCZ/UP+/meBI4ETgOPNbL2k0cAjZrZfu8eavfBC0vUCPpVFTiXpPPigi+zDFXNcdE84zulKaL2D\ntzzCqSG6066iysqK0svluee6ZiMPPNC/l4vHxcSLwJGSKiUJmA0sA+4Bzsqfcxa5Zu9BEASuRAy9\nE8zsWUm/AP5ELm3xKeD/AdXA7ZLOIZ+2WPAJPCoympuTS2560+c677Lf+njKP/nGOhfddRt95myO\n3bEjveibb6bXBOqqsh1DL89QtY7LUs3sauDqdoc3k/PWO+X+RekN+pya9JVuw/s1JtcEeOopn3TJ\nllE+hrXKqckj69O3KV7Vb1JyTYCJe2a7UjRLMfQMffYEQRCkp7eEU7pC5gy6Q/SDxn7pK90qWn28\nmn//dxdZl2pcgCH9nXqEO2xQThzhc9XXUp7tStEw6EEQBH2EMOglZO5JDmlmHs3JK3xi2R57dQD9\nW328R7cZdD/+cXpNpxF0ZRs3uugWizDoQRAEfYTYFC0lt92WXPKuQWfs/qQi49Xhbe76n7roPtxw\nrovuCSe4yLLsrPTe8r5O05m2VToVNBWJLKUtJq8U7QmS7Kmn0q936tTkklTs8MmnW7bWp+vhxIku\nsm4RFxYtSi65rOrw5Jrg97cdNKjnlZuS7I03umZzhg3zrxTN0GdPEARBeiKGXkI8ejp7pNTV4eMp\ne715K1t90gc3bfLpmbOK9N7y4eOdqqgqnPoSFYksxdAz9NkTBEGQnp70cpF0kqQXJa3ID+4pdM6/\n5n/+rKRDerLWzHnodQ5Ohkcqn9dGzH6j0pekAzy6eIiL7jHHuMiycmV6zcXLfa76HKZGFpXuXrVK\nKgN+TK6lyTpgkaS7zeyFNuecDLzfzCZLmgH8O7nus90icwb9kvTzLbj88vSaQyt9KkXXbvIxrDOP\n8mlj24JPOtGMaelDTKs2+oQ+PMo4ikkPnKsjgJfMbDWApF8CpwFte4DvmtRmZk9IGtJu2M+7IkIu\nQRAEndCDkMtYYG2b+6/kj+3unHHdXWvmPPRrrkmv6dE/ZtV6n3y6ifdf66LL2We7yK5+1cdDnzQm\nvS81rttmomd4zPIoJh1tinZhQlJXc6zbpzp2Ozc7cwY9CIIgKR2kudXMnEnNzJm77l9xxRXtT1kH\njG9zfzw5D7yzc8blj3WLTguLJFUAfwsckD+0FLjFzFwab0gye/bZ9MKTJ6fXdMofbOrn00Omf8Nb\nLrpePXNu+VV63b85aXNyTU80bFhRCousi5foKi9/m56kcuDPwAeBV4Engc8U2BQ938xOlnQk8AMz\n6/amaIdWQ9JU4HmgBlgDvAwcDyyTdEBHjwuCIOhTtLZ27asdZtYMnA88QG7M5m1m9oKkz0n6XP6c\n+4D/kfQScB1wXk+W2qGHLulh4NtmNr/d8dnApWZ2fE+Eu4MkM48cQo/KIq9mLvfe66M7e7fDqkqD\nk4e+eUv6K7ChOHnoTq+x9tijOB769u1dO3fgwF5d+j+2vTEHMLOHJDn0/szz85+n1/RIVt5rr/Sa\nAA1O48LqnQZNbPYxcvc+nH7k3mePcjLoI0f66BYLj6yIbtKZQZekgWa2vd3BgUCGimGDIAh6gNc4\nrW7QmUH/BXCnpPPbJMZPBP4VuCnB2grz2mvJJRsmOrRbdKJylNOEdq+2h9U+1ZPPPJNe87PHOvlh\nVdnu5UKGOtJ2aNDN7F8knQ88KmnnX6Qe+K6Z/SjJ6oIgCLzpIx46ZvZj4MeSBufvO+WWteHIbmf0\ndJvKtcuTazJ4cHpNgDFjXGTXbfHx4saO9vln9dgy2Fjl05h8hDlN1igWfcGgS/oKsNXM/qOtIZd0\nDlBtZj9IscAgCAJXMmTQO0tbfAo40sx2tDs+AFhsZgcmWF/7NdmGDenjWSOGp/+DtphPYVHZ6z51\n2vXVPrH7qkqff9ZHH0v/950xI7kk4Nc5tLy8OBOLbEPX+mRp5MhenbZY3t6YA5jZDklui+68dUJp\n+OTp6S8Zm1t9DPqKLT6GtdKl9hgGjvN5nWdOXLv7k4pMffP43Z9UArI08acgLdkJGXX2UkvSO/67\nJY2kB81j8s8xRNKdkl6QtEzSDElDJc2XtFzSg5J8+rgGQRC0pZuVoh50FnI5E/gi8BVgcf7wB4Dv\nAj82s593W1S6EVhgZjfk+x1UAZcCm8zs6vxkj73M7KJ2j7Pt29OHXCpeXZVc06vgpW7KYS66Xpfl\nlY0+Az3YtCm9ppfRGTrURVbve19xQi4vv9y1c/feu/eGXMzsF5JeB/4vf23O9TzwDTO7v7uCkvYE\njjOzs/I6zcBWSacCs/Kn3QjUAhcVfJIgCIJU9BLvuyvsLm3xfuAdxlvSl3qQ5TIReF3Sz4CDyHn/\nXwLaTunYABSsF65Y45BC2MVeDkVl0qT0msBNTiVj552yxkd4wAAf3ayXw78Lmgb6FG8Vjb5i0Dvh\nK0B3DXo5cCi5lpGLJP2Adp64mZmkgrGVeT/6a01TzRFHUOO1dR8EQa9iwYJaFiyoLf4TZ8igd9oP\nvcMHSWvNrFtb5vmN1sfNbGL+/rHAxcD/Ao43s/WSRgOPmNl+7R7r0g9946jpyTVHjEguCbiF7t0q\n/ysbnH5hj8oirzeVU+dQlZUVJ4a+YkXXzp08uffG0EtF3mCvlTTFzJaTm4j9fP7rLOCq/PffFHyC\nPfdMtdRdjKhy+Od7yydVami1k2V16vK4pZ/Pht2Qj5+UXHPpDU8m1wS/0XdFoy90W5T0FzpOTxzU\nQ90LgJvzRUorgbPJdXC8PV+Juhr4ZA81giAIek5fD7l4IcmefTb9eqfv7ZDa1tFk2hLTUO6zgeW1\nN1nW7FTR5BGG8KrwqatzkdXgwcUJuTz3XNfOPfDA917IJQiCIFNkyEPPnEHfd18H0VaHEVpO3tRG\nn1YuTKhyKLQBt/FoLF2aXvPgg9NrAltaMp62mKEoRuYMehAEQVLCQy8dy5al15w6NX3mh9fGeqNT\nSHlz9XAX3Sqn2H2FR5c5hwwxgCETffqwF40w6KXjkFV3JdfcOPZjyTWdJqMxpTr9iD8A6p0+wcp9\njByjRyeXbBz//uSakEEj056+kLYYBEEQEB56SXFI9/KoefEq6vvlb9N7jgBz57rIUjXQqde1wy9c\ngVM8bUd2DGJBMmTQs956PgiCoLSYde3rXSDpf0t6XlKLpEM7OW+1pCWSnpa021Lf7Hnoo9JP1Fmb\nfriMiyb4Ffgsd2iiCVBR4VPANXXhLck1lx7zueSa4LYXWzxK46E/B5wOXLeb8wyoMbMuNR3KnkEP\ngiBISQkMupm9CNDFaZ5drj7NnkF38NBnOIzZ9NpYr7zxJy66S6d83kV38mQXWU69KL23fNuZySUB\nqOznFLsvFr5ZLgY8JKkFuM7MftrZyZkz6I+uSj/oduYrjyfX9Gk4Cp94yMew3jl3nYsuSze6yN79\nBYeS3JU+Q6Ld4njFogMPvfbZZ6ldsqTDh0maDxRyBy8xs3u6qH6Mmb0m6X3AfEkvmtnCjk7OnEEP\ngiBISgcbnjXTp1Mz/a+zEq74z/9s9zD7UM+l7bX899cl/Ro4Aug7Bn3mtPQDCdY1HJVcc+zY5JIA\n3Hl5xx5HKVnTnH6ICMCECT79369/6pDkmucMX5RcE4AxY3x0i0Xp0xYLxsglDQLKzKxOUhVwInBF\nZ08UaYtBEASd0drata93gaTTJa0FjgTulXR//vgYSffmTxsFLJT0DPAE8Dsze7Cz582ch37Pf6Wf\nMDNtWnJJaGpyEAVuvtlFdsJlTv0+Bvnk1J2z72PJNZdVHZtcE2Cqz1Co4lGaLJdfA78ucPxV4JT8\n7f8B3lWLzMwZ9CAIgqRkqFI0cwZ97gyHrIRhw9Jr7nBKlfroR310vdo8VlW5yN7+anpv+ZNHOxmm\nRqerzWLR4tQeohtkzqBfe2f6Jiefcyiw297qs1lX5ZSYvbmfT/vcSqfPkVWr0mvWN/hsmbV6DIgp\nJuGhB0EQ9BEyZNAzNyQ6VziVFo9CMa/30Pe/76N74YU+upU4tNIE3rd3+iuw1x9xGHsHboVF2nff\n4gyJvvXWrp37mc/EkOggCIJeTYY89MwZdDv/gvSifzojuWSZ09iur3+izkV3Y90kF93mSp+9ii99\nKb3mykqP/NvotpiSzBn0IAiCpGQoLJ05g77sCz9Krvnqq8kl2XtLek2AKSt8ysNHnLi3i+7mOp82\naE88kV7z0s9tSi/aF4iZoqVjo0MausfAZqdIALRrMJSKupmnuOh6/a/ePe685JqPvXhtck2Agw5y\nkS0eGQq5uPVykVSWH6t0T/7+UEnzJS2X9KCkIV5rC4Ig2EUJermUCk8P/YvAMmCn/3sRMN/Mrpb0\n9fz9i9o/qGb9L9OtMM+qGZ9OrunVoG7jD7uWolVsqp3eiSOq6n2E58xJLunlKVcPyPiAi15irLuC\ni4cuaRxwMvAf/LV15KnAjfnbNwJONehBEARtKMGQ6FLh5aFfA3wVGNzm2Egz25C/vQEYWeiBdaek\n95ZHOHzslfnMLnZrqeLmKfdzijrOnZtcstpr8rjHJlQxyZCHntygS/oIsNHMnpZUU+gcM7NcVeg7\nufLKebtuH3dcDccdV/ApgiB4j1H72GPUPlaCtsQZMujJS/8lXQl8FmgGBpLz0u8CDgdqzGy9pNHA\nI2a2X7vH2pNPpr+08ehXVeHUz6iy1clTXu8wYxNoHOdT0FRR7zF5y6cxucNcdwDKy1Wc0v9rruna\nuf/0T++90n8zuwS4BEDSLOD/mNlnJV0NnAVclf/+m0KPP7z6xVRL3UVT1X67P6nI7NiRXBKAulaf\ndrLVe/vkoVfU+yT8//RX6Y3riScmlwSgzqf4uHhkyEPvDXnoO13u7wC3SzoHWA180m1FQRAEO+kl\nG55dwdWgm9kCYEH+9mZg9u4es646vbc89s301Uz9PYZqAE/8yWc3dsbEN110vTbszj1xTXLNxlET\nkmuCTzF7msKEAAARVUlEQVRgUQkPPQiCoI8QBr10jB2bXvOmm9JPSZo5M7kkAFdd5aN71w8zXnzy\nbtlnn+SSO97yCR14FckVjTDoQRAEfYQw6KXDw4P0mCna36cJIHf9aJ2P8Aif3LbGVp8XumLr1uSa\n5U7/7du3++gWjRgSXTo8BgN4UFHu9CZq8BnJ5pXbVjHUJzd70ZLBuz+pyBx6aHJJAMqUHQ+3IBny\n0N26LQZBEGSCEnRblPTPkp6V9IykP0ga38F5J0l6UdKKfNPCTsmch15R+0ByzWXjP5xcc/Jkn/TB\n/l5VIKNHu8h6tTc5/D+/mF50wqXpNQGcUnCLRmk89KvN7BsAki4Avgn8Q9sTJJUBPyaXzr0OWCTp\nbjN7oaMnDQ89CIKgM0rgoZtZW89pD6DQOKkjgJfMbLWZNQG/BE7r7Hkz56F7eMvDhyeXdJuk03/b\nNhfdzY0+LQfGj/HZq1h85g+Tax7WkL6YqU9Qohi6pG+R62u1DTiywCljgbbXkK8AMzp7zswZdI+I\nwNR90//Tt+ATcnnMjnHR3c9r38mpac6SJelnDA4/wadSdM+s93LpIMul9uWXqe0kZidpPlAofesS\nM7vHzC4FLpV0EbmW4me3O+9dFw5kzqAHQRAkpQMPvWbcOGrGjdt1/4rHH3/bz83sQ11UuAW4r8Dx\ndUDbzdLx5Lz0DsmcQa/yuDJ/M32fkbIBA5JrAhz7y0tcdPlh+hAEAE5dLT3CeBOGO7VGdnovF40S\nhFwkTTazFfm7pwFPFzjtT8BkSfsArwKfAj7T2fNmzqAHQRAkpTQx9G9L2hdoAVYCXwCQNAb4qZmd\nYmbNks4HHgDKgOs7y3CBDBr0ffdNr9lEeneq3smZGnLKKT7CDpWTAOy5p4vsQw+l1zz5ZJ+N5ygs\neidm9okOjr8KnNLm/v3A/V193swZ9CAIgqREP/TS0f+pJ9KLTkifHTBk4MDkmgAc45Pl4lX6X9ff\np/T/h/+7BLMvd8PK1ccm1wTYZ5+Ml7tkqPQ/cwad/fdPr1nmkELo1RDIKdZTN9ihLzJ++3UrR6c3\nrl5tbMtam3yEi4VXUUg3yJ5BD4IgSEl46CWkMn1BhovXWlGRXhNYuc2np0rDGy6yTBtVqOK69Gza\nlH6jfVLjsuSagNvGc9EIgx4EQdBHCIPet1hXPyS55hsvJ5cEYHqDw6YzsHFipy0qSsb6ZocKH2CZ\ng7M84+yp6UWBpoyH0CPLJQiCoK8QHnrp+OnP048MO/dTbyXXHDo0/UQbgK9e7uMpX+rUqtuLs+em\nj90//rjP1ci0aS6yxSMMeuk4d1yXi6aKR9WJySUrfZot8tWv+uh6/c84TaCD2qXJJY867rjkmoBP\n2m8xibTFIAiCPkJ46KXj6VFzkmsesqRQI7QSs99+6TWBSo+0UGDQIBdZt6HYy0bUJNecunplck0g\n+2mLGdoUTV6TK2m8pEckPS9pqaQL88eHSpovabmkByWlTy0JgiBoTwlG0JUKDw+9CfgnM3tG0h7A\n4vxkj7OB+WZ2dX669UX5r7dxxx1pFwtwyBUOuzrbt6fXBKqrXWTdOh004HNFMnXhdelF/+Efdn9O\nKXCaClU0eomx7grJPXQzW29mz+Rv/wV4gdzsvFOBG/On3Qh8NPXagiAI3kF46F0jP4njEOAJYKSZ\nbcj/aAMwstBjTjopydLexpb69KmS4KEJr6RPvgBg2rgtLrrNZe+hyN4bTv0Vsh5D7yXGuiu4GfR8\nuOVXwBfNrE7Srp+ZmUkquBNx223zdt0+/PAajjiiprQLBfo72FavLoCPpe/qCsC0c31iPdVeGXUf\n/GByyZZhI5JrQrqsvwULann00driP7FXPLAbuBh0Sf3JGfObzOw3+cMbJI0ys/WSRgMbCz32H/9x\nXqJVBkGQJWbNqmHWrJpd97/1rSuK88ThoXeMcq749cAyM/tBmx/dDZwFXJX//psCD2dq85KSr7E9\nLQOnJ9f0eg99/vDFPsI7fPqMuDUa8Rg8PtHH0yzrlx2DWJAw6J1yDHAGsETSzgTvi4HvALdLOgdY\nDXzSYW1BEARvJwx6x5jZY3ScXTN7d4//yX+n95Y/Pyl9P/RtrT4DfTeOOsxFd2yFzz9NU7lP2mJ/\njwYn27al1wTwGqdYLMKgB0EQ9BHCoJeOT3wivebmxvTecpWPg87Y1rUuuo1N4110K1p9Sv+54ILk\nki3X/UdyTegDM0UzVPqfOYM+vN/m5Jr1Felb8nkZmodX+BjWfZ0Gw1dU+IRchl+XvlK0rLkxuSaQ\nKQ+3IBnqtuj0bxQEQZARSlgpKukrklolFfQaJa2WtETS05Ke3N3zZc5Df+ip9N7y7BPSexir1vh4\njpMnu8gyxKlgc2PBaofSM7zf1uSaa+t9mr87zTsvHiW6wpA0HvgQsKaT0wyoMbMuhSbCQw+CIOiM\n0nno3we+1oXztPtTcmTOQ599/WccRG9NLjlxRPpUSQAefthHt6bGRXbiRJ+WA8cem95bnj8/uSSQ\nqRB0YUqwKSrpNOAVM1vStu1JIXXgIUktwHVm9tPOTs6cQQ+CIEhKB953bV0dtX/5S4cPy7cFH1Xg\nR5eSK6ZsO9uyI6t+jJm9Jul9wHxJL5rZwg41LUMpOZLs+efTr3e8Q+JHP6dg2AMP+Oh+7KjXXHSX\n14120Z0yeH16Ua9m906d5jRgAGbW5XBFweeQzKZ3rZhRS5Z0SU/SNOAPwM5Kr3HAOuAIM+twV0fS\nN4G/mNn3Ojoncx66x+Wbx3g0r5kAp53mo7v2VR/D6jUkevGaQo5baTlsP58wXks/n1bQRaPIRsfM\nltKmPbikVcBh7Tc+JQ0CyvLdaKvIefSddhyLTdEgCILOKP2Ai11hB0ljJN2bvzsKWCjpGXIzI35n\nZg929kSZC7nYrek3KDn99PSa5U4XT055fOvl46GPGuZUxehRbOM0ENsrb1GDBhUn5LLvvl07989/\n7rFeT8lcyCUIgiApGap0zZxB33LSp5NrepT4VDj1v/jZ73085ZkzXWThfU5Rx3vuSa959NHpNfsC\nYdCDIAj6CBky6JmLoa9enZ319gSv7Ivqxk0uumsbhrvoDveRZa1DU8spo95KLwqwxx4usiorK04M\nvYt5y1q7NmLo75YJD/8suWbDp89Orlnp08oFVr3qIjt+sk+/4AaXgBrccUd6zQsvHJxeFGja4iJb\nPDLk9GbOoAdBECQlQi6lQZK98kr69Y4dnf4PWt/gs1m33qGAEWDSJB/dRqcW4RVvpn+h66rSFzOB\nX4GqpOKEXEZ17XXT+vURcgmCIOjVZMhDz5xBH7vp2fSi1ROTS1Z13oGtdLpVPu7U5vSDqAAYWuFT\nDn/9vem95XPmOjV/7+c0T7FYhEEPgiDoI4RBLx21bx6UXPPgCcklWbkyvSbAU0/56HaxurrojBrl\n4z3utVd6zbWNI9KLAs1Orf2LRkuL9wq6TOY2Rc2j3eLW9OPCmqp9EtH7l/l4I5s2+2wCD6/y6W9y\nz0Pp0yXnTliSXBOAielDlgAaPLg4m6Jd3NVVXV1sigZBEPRqMhRyyZ6H/mz6TdH6SV1rcF9MqtYt\nT64JUDd6iotu9ZqlLrrsv7+LbP32suSaVQOdQgcOV7gAGjasOB56F6v81NDg7qH3qn7okk6S9KKk\nFZK+7r2enTz6aK2Lbu0TT7joLlxYm1yzdtGi5JoAtbW1Lrpu7ymn37f2scdcdItC6fuhF41eE3KR\nVAb8GJhNbhzTIkl3m9kLbzvRwaN64lf/wpwPJ24H+P73U3vzzdT87d8mla2ur+PJhQ9w8nGHJdX9\n7ZI1TJqdvsVC7Z13UvPBDybXve++WiZNqkmqOWXF73Pvqe3bk+py4onULlpEzZw5aXWLRYaiGL3J\nQz8CeMnMVptZE/BLwGkgWhAEQZ7w0LvFWKBtD7pXgBntT1r65/TzCVtaRVNL2s++5mZoahYNjWl1\nKxcvhtdeg8WLk+rusQd0scK6qGzfDlscmke98QasWJFWc2zNKez4r0XU15ySVLdhK2xrLGPT1ozO\nFvXIrOsmvWZTVNLHgZPM7Nz8/TOAGWZ2QZtzesdigyDIBMXYFE2p11N6k4e+DmjbeHg8OS99F94v\nVhAE7y2yZnN6Uwz9T8BkSftIGgB8CrjbeU1BEASZodd46GbWLOl84AGgDLj+HRkuQRAEQYf0mhh6\nEARB0DN6U8ilUzyKjiTdIGmDpOdS6LXRHS/pEUnPS1oq6cIEmgMlPSHpGUnLJH271Jrt9MskPS3p\nnoSaqyUtyes+mVB3iKQ7Jb2Qf62PLLHevvnfcefX1hTvqbz2xfn38XOSbpFUkUj3i3nNpZK+mEKz\nV2Bmvf6LXAjmJWAfoD/wDLB/At3jgEOA5xL/vqOAg/O39wD+nOj3HZT/Xg78ETg24e/8ZeBm4O6E\nmquAoSn/tnndG4G/b/Na75lQux/wGjA+gdY+wP8AFfn7twFnJdCdBjwHDMzbjvnApNR/Z4+vrHjo\nLkVHZrYQeLPUOgV015vZM/nbfwFeAMYk0N2WvzmA3D9CkrETksYBJwP/AaTOKkiqJ2lP4DgzuwFy\ne0dmlrLZyWxgpZmt3e2ZPectoAkYJKkcGEQum63U7Ac8YWbbzawFWAB8LIGuO1kx6IWKjsY6rSUp\nkvYhd5VQ8sYukvpJegbYADxiZstKrZnnGuCrQOpyOwMekvQnSecm0pwIvC7pZ5KekvRTSYMSaQN8\nGrglhZCZbQa+B7wMvApsMbOHEkgvBY6TNDT/2p4CjEug605WDPp7cudW0h7AncAX8556STGzVjM7\nmNybf6akmlJrSvoIsNHMnia9d36MmR0CzAH+UdJxCTTLgUOBa83sUKAeuCiBLvl04LnAHYn0JgFf\nIhd6GQPsIankzYnM7EXgKuBB4H7gadI7Cy5kxaDvtuioryGpP/Ar4D/N7DcptfMhgHuBDySQOxo4\nVdIq4FbgBEm/SKCLmb2W//468Gtyob1S8wrwipntbC95JzkDn4I5wOL875uCDwD/bWZvmFkzcBe5\nv3fJMbMbzOwDZjYL2EJuH6rPkxWD/p4qOpIk4HpgmZn9IJHmcElD8rcrgQ+R82xKipldYmbjzWwi\nuXDAw2Z2Zql1JQ2SVJ2/XQWcSG4jraSY2XpgraSdjednA8+XWjfPZ8h9aKbiReBISZX59/RsIEkY\nT9KI/Pe9gdNJFGbyptcUFnWGORUdSboVmAUMk7QWuNzMflZqXeAY4AxgiaSdRvViM/t9CTVHAzdK\n6kfug/4mM/tDCfU6IlV4bSTw65ydoRy42cweTKR9AXBz3jlZCZS8b3D+Q2s2kGqvADN7Nn+19Sdy\nIY+ngP+XSP5OScPIbcqeZ2ZvJdJ1JQqLgiAI+ghZCbkEQRAEuyEMehAEQR8hDHoQBEEfIQx6EARB\nHyEMehAEQR8hDHoQBEEfIQx60GuR9LCkE9sd+5KkayVNkXSfpOWSFku6rU0xybH5VsAv5L+S5V4H\ngSeZKCwK3rPcSq56tG3Bz6eArwG/A/7JzO4FkDQLeF++MOpm4DQzeyZfXPKApHVmdl/a5QdBWqKw\nKOi1SBpKrnXw2Hy18D7kWqFeAcw0s78r8Jh/BlrMbF6bYycA88xsZoJlB4EbEXIJei359qtPkuuV\nDjlv/XbgAHJl5IWYCixud2xx/jFB0KcJgx70dnaGXSAXbulKk6XUbXiDoFcQBj3o7dwNfFDSIeRG\n5D1NrjvhYR2cv6zAzw4jN/QgCPo0YdCDXk1+sMcjwM/4q3d+C3C0pJ2hGCTNlHQA8G/A30k6KH98\nGPAd4OqkCw8CB2JTNOj1SDqN3HCE/c1sef7YvsAPgEnkWqQ+S26y0+v5yUPfA6rJhV+uMbPrXBYf\nBAkJgx4EQdBHiJBLEARBHyEMehAEQR8hDHoQBEEfIQx6EARBHyEMehAEQR8hDHoQBEEfIQx6EARB\nH+H/A14UY3GHB2XMAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "imagefn = 'weight_matrix.pdf'\n", "posterdir = '/Users/joe/projects/poster'\n", "\n", "savepath = os.path.join(posterdir, imagefn)\n", "f.savefig(savepath)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 40 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Save weight matrix" ] }, { "cell_type": "code", "collapsed": false, "input": [ "which = 'W-matrix'\n", "save_fn = os.path.join(datadir, '%s.npy' % which)\n", "\n", "if os.path.exists(save_fn):\n", " backup_fn = os.path.join(datadir, '%s-%s.npy' % (which, time.strftime('%Y-%m-%d-%H-%M-%S')))\n", " if subprocess.call(['mv', save_fn, backup_fn]) == 0:\n", " print('Saved backup to: ', backup_fn)\n", "\n", "np.save(save_fn, W)\n", "print('Saved weight matrix to: ', save_fn)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Saved weight matrix to: /Users/joe/source/phase_model/data/W-matrix.npy\n" ] } ], "prompt_number": 23 } ], "metadata": {} } ] }