{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from pymks import MKSRegressionModel\n", "from pymks import FastMKSRegressionModel\n", "from pymks import FiPyCHModel\n", "from sklearn import metrics\n", "\n", "\n", "mse = metrics.mean_squared_error" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.parallel import Client\n", "rc = Client()\n", "dview = rc[:]\n", "\n", "#serial_result = map(lambda x:x**10, range(32))\n", "\n", "#parallel_result = dview.map_sync(lambda x: x**10, range(32))\n", "\n", "np.random.seed(101)\n", "X = [np.random.random((100, 11, 11)) for x in range(32)]\n", "#fipymodel = FiPyCHModel(dx=dx, dy=dx, dt=dt, a=1.)\n", "def fipymodel(X):\n", " from pymks import FiPyCHModel\n", " dx = 0.25\n", " dt = 1e-3\n", " fipymodel = FiPyCHModel(dx=dx, dy=dx, dt=dt, a=1.)\n", " return fipymodel.predict(X)\n", "\n", "dview['fipymodel'] = fipymodel\n", "#y = fipymodel.predict(X)\n", "#y = dview.map_sync(lambda x: x, X)\n", "y = dview.map_sync(lambda x: fipymodel(x), X)\n", "y = np.concatenate(y, axis=0)\n", "X = np.concatenate(X, axis=0)\n", "print y.shape" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(3200, 11, 11)\n" ] } ], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "model = MKSRegressionModel(Nbin=5)\n", "model.fit(X, y)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "coeff = np.fft.ifftn(model.Fcoeff, axes=(0, 1)).real\n", "Nroll = coeff.shape[0] / 2\n", "coeff_rolled = np.roll(np.roll(coeff[:,:,0], Nroll, axis=0), Nroll, axis=1)\n", "plt.contourf(coeff_rolled, 250)\n", "plt.colorbar()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAVkAAAD7CAYAAADAUeeKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnU9wG8e9578wSVGUbRoE+eLEjvwIiEqUKu8rUv8uuwet\nQOa6VaZK8mH3ZsjnrS2WlKp3kE9ipNraY2LCtz1FBlK1lz2EmFq9t2/fHsQFUrVObEfSgIlczotj\nQKD1hyIFSu8wmGGj2TPTM9MDNAa/T9UUiZmenp5/X/zw+3X/OvXy5cuXIAiCIGLhlX43gCAIIsmQ\nyBIEQcQIiSxBEESMSInslStXuj6Xy2UYhoFisRhLowiCIJKCr8iura2hXC47n6vVKgAgn88DAGq1\nWkxNIwiCGHx8Rfby5cvI5XLO51u3bmFqagoAkMvlUKlU4msdQRDEgBPYJ9tqtZDJZJzPjUZDaYMI\ngiCSRKjAF3WtJQiCkCOwyKbTaTSbTQDAw4cPMT09rbxRBEEQSWE06A6XLl3CxsYG8vk86vU6lpaW\nDpRJpVJKGkcQxHAQ9dfxkVQK25Jlp6amHEOxF/iKbKlUwsbGBj755BN88MEHWFhYwMbGBgzDQDqd\nxvz8vHjH1xPkUrCv0vY1YOJaHxsSA0k8JyCZ52WfU7vfDVHMo+hG2TaAa5Jlrz18GPl4QfAV2QsX\nLuDChQtd6wqFAoD9blyJJrCtTxAxYz+TSRPbiOj6qurarv5DV4bQnVGQ0DJM9LsBLpCU8HhdkdFz\nvWpF70jiOQHJPC/ROZFV6zAWcr9qtYp6vY5ms4lCoYBqtYrTp0874wOWlpbwi1/8whnhev/+fayu\nrkrXTyLL4nc1xs71ohW9JYnnBCTzvLzOiaza0GK2urqKW7du4ebNm6jVanj48CFevHgBwBrRmk6n\nYRgGFhcXkc1mcfHiRRiGIe0upQQxgHV36OuGGHSG/Dkek1xYSqUSzpw5AwBYWVnBwsJCl3hubGwg\nm83CNE1ndGsul4NpmtLtGuJb0oGuAJE0htSqDeOT3djYAGBZrJVKBSsrK842wzBw8eJFAPvBfsBy\nL7z//vvSxxheS3bIv/WJhDOEz/eo5MIzMzODhYUFAOhKhrW+vo433nijq2y1WsWpU6fcu64KGE6R\nHbKHjxhihuhZd3MPfAng18zCMj09jWw2C8AazXrnzh1nm51xkMUwDFy/fj1Qu4ZLZIfw250ghuW5\ndxPZBQD/kVlYLly44PhXW60Wzp49CwBCn+va2prjTjAMQ7pdwyOyQ/CQEYQn9A4cIJvNIp1Oo1wu\no9ls4r333gNgpQY4duyYU65SqeDq1auYm5tDJpMJlDogFcdstalUSp9htfRgEcRBdAqMPUpFzl2Q\nSqWwLll2Cb3NJJhsCUr22RFEeBLYA0HX113XdkUjmWdFEGpJ2GixsCO+4iZ5cpS8MyKIeEmIVavr\nq69ru4KTnDMhiN6TAKuWEsTESTLOgiD6zwCLLbkL4mCwW08Q+jKALgRd5UDXdvkzuC0niMFgwISW\nLFmVDGarCWLwGCChJZ+sKgavxQQx2AyIn3ZMVht6fB6DI1mD01KCSCaaW7Wjmors8OQuIAgiOmTs\nBGYwLtlgtJIghgNNLdqxkX63QIz+8qV/CwmC0ICJw5IFn8TajAPoLWF6t44ghhcdrVlNLVl9fbIk\nsAShN7q9oyHnn7ly5QoAOFN+A9Y0NIZh+K6TQc98srrdPIIg3Ilq0SrKJ/vyHcmyf+rOJ5vJZDA9\nPY2PP/4Y58+fR61WAwAsLCzAMAxkMhmnLLvOnhfMD/0sWRJYghgsdHlnxyUXjmKxiLt37+L8+fPO\nOtu6NU0TCwsLePny5YF1suglsrrcLIIggqHDuxvSXdBsNmEYBm7evAnAslaz2SwymYxjxZ48efLA\nOln0EVkdbhJBEOHp9zscUmQLhQLy+TwajQYMw0Cr1cLc3ByKxSIKhQLq9bpwXZBm9R89WkEQRFT6\n2evApXfB7cfWIqJYLCKTyWB5eRnT09MwTRPVahUffvghJicnkU6nUSqVAODAOnvmWj/6b8mSwBJE\nsujXO31YvJybAa7N7i8suVwOi4uLAIBGo4HTp08DACYnJwEA+Xwe6XQaqVTqwDpZ+itxJLAEkUz6\nYdGG6Cebz+dRLpcBADMzM1hYWMDCwgJu3ryJXC6HZrOJQqEAAMJ1MvSvCxcJLEEkHxmhVdWF699K\nlv0/wzAlOAksQQwHvbRoNdWV3jdL0wtBEERM9EpoNdWW3jZL04tAEETM9EJoBQMNdKB3skcCSxDD\nTdxCq6nGhGpWuVxGOp2GaZqBomwEQQw5cQptUkS2Vqshl8s5Y3drtZr/OF5NT54giD4Ql9AmKdVh\noEQJJLAEQfDEoQsugxEOLD0msMiKkie4QgJLEESvGJFcekxgkZVOlEACS/Dolkmf6C+qNSJkgpi4\nCXzIYrEolyhh+xpzlHPA2LnQjSQGnDb3P30BDzfPbwPt2+rr1fS5CtUsNlGCaZriQhPXwraJGGRk\nrFVRGU1fECIGxs51G13PPlJTr6b9ZEPlLvBLlJBKpYCp3o0NJvpE3D//SXiHg4eKchf8F8my/7W3\nuQviSxBDIpssdPGnkvAmj4SLbP/zyRL60RYsqupUVY/KthHJIObZam3saWpkIZEl4hMtUZ1xH4dE\nd3gJ2YWrWCzi+PHjOHbsGACgWq0CsGJOAJzZawGgUqlgfX09ULNIZIeZuERJtt5+H59IFiEHI/Cz\n1d66dQtTU1MArJkTKpWKUzaVSgVuFonssKJahKJYknFZoSS0w4Wi2WpbrVbXQKtGowHAsmht6zZo\ns4hhQ/VPdRmed/6OBahPxdNJ/XKHh5CjueweUuvr6zAMA4A4MNZsNkPVT5bssKE6+OTHc+wLrOiz\nzHGiQhbtcBDCki0Wi84cX/Zstel02hHUVquF6enp0Fas3SxiWIgiNmH29RJTWcuWP3bYJ9aug574\n5OIyGOH2XWsRkcvlnBlqG40GlpaWcPr0aWxsbDiDrRYXF2GaJkzTRKPRQLPZlMs+2IEeuWFAJ3EV\nlZURWpuoYknug+Ticl/P/cRabD76n/v/87PVzs/PAwA2NjZgGAbS6bQzgy1gWb5bW1uBAmA0GCHp\nhA1EhcFLXGXEMYjYsoQRTRJafVA1GOETybIfDMNstURvCCKWUaxdGXHlP4uevCAuBLdjyD7RZNEm\nD02TdtNjllRkRbNX4uq2XaXY+tUrKktvQHLoQ0JuGah3QRLpp8AG7RHgVT5ITwRRvVGPTxAKoO/x\nJNEL90AU69ULL6syaHBMps4oZQk90fT+adosIjBxC2xc4iqqR7W/loR2OCCfLBEbcboHeiGubvWq\nElvy0w4Hmt43TZtFSBOXwPZDXN2Oo1JsSWiTi6YzI9CjNKjE6R7QQWBFx3QT27iE1u2YhJ5oeq80\nbRbhSVwCq5u48rgJZFCrlvy0yUTT+6RpswhX4hBY3cWVRZULgfy0yYMCX0Rk4vC/igRWN2EV4TXK\nK4gLgfy0yUHTwQj02AwKcQtsrMK6zX2eUFu9SHCDWrXkpx18NL0vmjaLcIjbPdAzcXXzScQkuKzY\nqhTaoGWJ3qGpu4CG1erMQArsNrM8ZxZ2/Co7XtYuqxj23IIkCQ9TP6EHIaefsWFnoS0WiygWi7h6\n9aqzzmsGWy9IZHVloASWFVb7QKywtn3WPRfUoQBe14PuI1OWSATsLLSVSgWLi4soFAowTROGYTgz\n1opmsPWDRFZH4khuYouMsoQobsLqZrXy1i3fGJF1q0hwgwotu4+qckT8jEsuAtgk3PV63ZmhNpfL\nwTRN/OpXv0I6nXbWsTPY+kEiqxtxBriUiitbuZdo8uIaRGzZ40UUXLfqZfZRVY6Il5DuAn7+rkKh\n4EyuWK1Wcfr0aWeuLxt7BlvZZhE6oLV7gBc4XqVEDtBt7rNfA8aYMqPcMezIlV1nyGAZG7BSHRCj\nngf9J+S1d5uFtlqt4tSpU87UM2FnU6BHQge0FFiR5RhEXO11QX+rs2ILdAsuL7ZAYMGNU2iDliXU\nEuK6e81CaxgGrl+/DgBdM9g+fPiwy6qNoVmEUrQS2KDCym8XWa8i8bWxBXRMsN1WP1nrFpAWXL5K\nGiGWCNou/tZ/+N/AP/yTeJvbLLRra2tYWVkBYIntpUuXnBls6/U6lpaWpNtFEyn2E238r3GIq/15\nm1tnq48tiGPMujFuG7vOhlcvkUIGsG75QwfZR1W5YUfRRIrPnsiVPfzqwZ/+xWIRN27cwKeffopv\nv/0WFy9eRCaTQbPZRKlUwvnz51EsFp1AmO2zlWobiWyf0EJg/XytospkxdXezq+z1YwVW35dGLEV\nlZEUW7YqWbEloVWHIpF9/Ewujv/a4Rc0W23iUS2wodwDfqOxZMSVXS9yDbThr/xuvQZYF8IEDoq0\n6Pe7yHcrIbQUEEsEe6OyF3k31nbw0K3vJdr4X70ENoy42p951wAb+PLqGeDVPUtWbAGxUmogtEHL\nEqHYHTkkWzLWdvDQbe8V2gms385BxNUuw69ruxwPUCe29ja2TXyPhABCy+5OAbGBoq1p8gK65b1A\nC/8rICewbuLKH1TGNbDNrAuSICaI2LJ1s2LLm6WSQsvuTikTB4o9TS9sqFZVq1XU63U0m81AUbah\nRAuBdXMPeGVRieoa4MXVq7GyQssrn5fYugmt2/E4WKG1q5TdR1U5IhGEGla7urqK5eVltFqtQIkS\nho44AlxKBFZmGCu7zS7PDo3l17WZfUV5DLZd9nvuso3fT9QO0Tl6nadbeRe8voNk9vErR8NxlbKH\nEaml1wT+Pi2VSjhz5gwAOJ11CQ7t/K9sBW7K4WXt+rkGeDeEKOAl45P12hbGhcC7DygglmR2IRv4\n6i2Bb+/GxgYAazhapVIhoeXRTmD93ANeVqD9OYxrQDZ3gZvQqXAhuAkt0JOAGAltT9E18BXKXTAz\nM+MkTSiXy0obNNDEKbCBfl56CSz7U1uUTcvPNWB/9nMN+NXn5XpQ6UJw87G4fcl4IPI8+JWPwydP\nCNnDqNTSawIfcXp6GtlsFoCVNOHOnTtYXl4+WHD7GnOUc8DYuXAtHBQGIsDlJkIso9xf29Lj3Qav\nc+tYy5YPRLGWrb1tFPsmITvCix315TUE1w03S9U2QSkg1nee3wbat5VX2w9/qwyBb+mFCxdQKpUA\nAK1WC2fPnhUXnLgWpV2DRRxWSKguWvzObAUyAusFm4wzaKpBVoxlhFIFoq5bXkIbgDj9tMMgtGPn\nuo2uZx8pqXZHU59sYHdBNptFOp1GuVxGs9nEe++9F0e7kkkYH6w0op+9ogMqnN5FmlEAf9dZeqkg\nbm4RQJ9rQ6hCV3cBJYhRgYx4xhrkAvz9sGwZe12vzKbjwNHOoeoAsImQ3yQBsM+NNTNZt4ONKA0X\nJZbpKYoSxPzTy1NSZf9d6v9RgpiBQqWrILTuyAgsf6BeRFrGAMwCcwCOw3raXgPw+SzQ/guA72I+\nvn2OfLct0W/8EG4DhbsT0UmMT5YIgYyeKTXsZP2wzxHfIzANjGaAnwD4MYBZWPr2WueQ994EHk0A\n+EtMx2f9r4C7qIqs+RB9aNkqg+xDKENXnyzdbl2J1F3LrwzbHSvkfFmevAm8PmmJ63EAJ2BZsyMA\nDsN66g4D+GISeDgJ4G4MbbDP2VY9USDMRjRYISRk0faNsP7WUqmEqakpfPrpp/jlL3/pui5sOgGa\nrTYKqnyxvD5G+iXv5ocVCWwcLoPjwNQk8C6AfwPr77sA5pnPpzuf52H5anE8hnaw/XX9romIEENv\ngzQtjnqHnDDDag3DgGEYyOfzME0TtVrtwLrf/va3AMKnEyBLtt9EchPIzEzAwgpsHHQCXKwFewLA\nLPC9H/0Jh7CLr16bBV4b3e8RZlu29eNQHxBj++cCB+cUY/2zEazZMG4DQgvy+bwzkWKz2XQGWbHr\n5ufnI6UTIJGNEz9rRKQnoQYe+GFbc6KcBCqchFyAy3YPnABwYgc/fOsBZlHHKPYw/s4O6uOzeDH6\nqiWw44gpICYaaguIz9VNaCO4U/yElnyzygkb+Nra2sLa2hp+9rOfua67c+cOUqlUqHQCdJv7RSSB\nFVXk9ZOYrZgd1mr/jfIYCAJcPwFwAnjl2BNk39zEUTzALDYxgj0cwi5G3tzD5tgsdl+btIT2dcQQ\nEGPPmR05YBNRREWH4y9jVKElIQ7EDlymq/XhjTfewMrKCn7605/i5MmTyGazB9alUiknnUClUkG5\nXBaPdBVAtzAsfoIYVDAj9YmVEVg+b4AKp59LgOsE8NqJb/HWka8xi03Moo6jeIBR7OEInmIcOziS\neYr6a7PYGv3+vstAWUDMdhOwAsq6B2xk3AYhkn2zkOugZ7hZsr+//S1+f/tb4bZqtYpUKoWFhQWc\nPHkSpVIJi4uLANC1TjqdgAAS2TgI6iZQEuTwCurwAgumbFhr7jgwhX2/69z+/2/M/QuyhzYxC8uK\ntZcR7GECT/ct2kN72Hx3D43Db++7DF6DJbT3ADw4jnBC6zaigz1XtmuXm9CGIOiuZK0qw01kf3zu\nTfz43JvO5/JHXzj/G4aBkydPArDSBJw5cwaVSqVr3dmzZ7GwsCCXTkAA3d5eEzmuI5NC0K0nAZ+w\nJaxF6x3gst0DtgWbhSW4ADqW7C7GsYMRtDHxylNs/mgbXx2eVRgQY9MvTuCg0AJyXbtC+mYpENYX\nwqQ6vHz5Mm7dugXTNDE1NYXl5WVsbW11rbNTB7DpBIL4ZGlYbRi8dMlrmxI/rJsrQLSN76plr2dT\nEb4J4G3JY3cCXFkILNj9AFcWm3gLXzuW7Cw2MbtTx+jeC9SP/C0e4Cg2kXVs3E3M4gGOov6XWbz4\n8lXLiv0cwJew9PVzBAyINTs7jnUWUXavCeZ/MOXs/+GyTRKR+eIltF7mTtJNIUXDatde/iepspdT\n/52G1SYS5QLLV+wmsODWswIbBPkA16wjspbgHn36FcbvWoefO/5HHJncxjh2cQRPcQg7MQTERIlc\nWaEVde0CvIfdRrRm4VItoQwaVjsMBBHN0H5YkZtAJLDsgXiBZbfJNCRYgMt2DxzFA7zz12+AP8Fy\nrT4DRp8A7xz/BiM/6AhrJzeS2oCY6EsIOGip8t3geP8sEGkkWBChJd9sZEhkk0IYcVQS6GIFge8x\nYP/PJ9bmBRZc2W0cFBqe4AEuW3C//+ctSw/vAjAB7AHYsQ799rMGxrOWX/YInsYQELPFku++xVqj\no4Lz532wrPqFCBKqEE8SYCl0nX6Gbp0q3IRTaeIXNwvNry8sW87NqhURLsD1Fr7GTP2xldbQFtl6\n57DPOn+fADM7j3Ho+B9wZGQbI9hTGBBjv2xE1isvtEB3PXxQjP8/ILKBMBLTSOyG7CcbN3RL40TZ\ngAPeimWtVa+uWm2unJdVyydHnQ0d4Hq1/mJfXG1XgS2yT2BZs0+sz5M7u5g7fh8jR9pd/tkj2I4w\nQoz3XbOiKuotIOraZe/Huw34+kJCQqscchckGa9eVH7lpBFZq35dtdhyIquWLwsoCXCZ6LZg7wKb\nf7Jqn30Cy5p9Bsd9MK48IMZ/cfCiys5gy14ndhsvqBHVL2ogjMR3YKHbFoQoIhl6Xzdrla2Y76pl\nrxcJLNs/lv07CmUBLk5o734D/H+7lV8DP9mBJbBPADyG4oAY360NcO/ryk/4KEomw9bBlg1hzcoK\nLQlqKMgnO+i4iaSMFatkRBdvdYbpqsULLLt+1hJYQZKXQ7PfOQJrB7eyzP9vffdNt1vA3P/fFtjP\n2cvQsIxjAJZI2owAb6MB/ED80699aAQ4AWzh+wev8RcAHv4Q+35aUUALOHgzZLt28etCEkVASXw9\n6cf8XTLo2SodGUV4sYyybxdjOKgubt2R2G38PqKI+zbwaBJ4BMu6bHX+PgZ2n41jB4fwFBPYxSHs\nYhyP8DqedvoF7Iy/gtHxF8CrsHymhwG8AeBVYBJABtbf5wCOdI7mlB3vlO30INh5A9jGhFUvDmGH\nOdY2juDRw9etdtluh2041nD3NbAHG/CMuqy3t4ksVLe6QhDljaO31RPyySYVkYCKtDASvBXGCgG7\njhcZ3s/I/zxmRzx9Zy33jls/5W3vwzMAz8bxx/Yctt850on/W4K7hxFLdMfHMfuTTUy+ursvnK9a\nVb95GJi4C4w9s476d6NAJgvLWj4O4J3O3yzw5Pgr2BzPOqPANjGLr/EW6p0RYX/8Ogt8MW514/qi\ns9yF9dmxYHkRtT9PcNv4dXzgj92Pr0shbt8DRGB2afqZBBDEIuWFNrQ1y4olb4Gyb+hzroy9r72N\nF1owDWLruWt1j7IDU487h382im8ev4O9EyPYfcWyZvcwiqc4gh2MY2fkEI5mH+D7o1uWJWv7TceB\nyRHgZKdb60QOVq8FW2Q7/3+bfQ1f4639IbaYdYbebmIW3/zhHUtHWXH9EsCDTpu7sIfT8gLLbudF\n1742Y4L1vAiH7F3Av21B9JreVF/IJ5tk3ARUmdDylbEuAtHwT7YMb73yP4l5AQGAu8Cffwg8nrDc\nB21Y3a62gUb7bezMjaN9xJrKo8uixTj2jm7i7cMNaz6vEVgW7WFg4lVYon0Ulrjm4Ijsvxx9o0tQ\n2ZwG9d1ZbN37frewfgFLcP/caasQkSXK5zJgcxSIBJZ3E0SwYmXfNHojQ0M+WcIilNDa1izrNvAT\nWrYMKzRunfR5vgIeTQO/y3S7D54Ajx/P4A8nDmE7cwRPcQR7GMUOxtHuiO7232xidvwrjNojtToW\nLdrYF9ejAH4E/OlvvrcvqB2B3UQWX+MH2HyaxeMvZrrF1f7/0bbVRtfrJXIZiKxaUbIY/ppFtGKD\nJoshQkE+2aTgJpKy1qxXWU94t4HIF8veTrZLlyigI/Lv8jSA7edA7U3Lot2B5T5oA7vtSdyfm0P7\nrRHs4BB2cQh7GMF2R3TbkyM4euIBXh15se+nZUR25zjw4MgPUe/4XTc7HcIcwf3LLF7cf3XfarWz\nct0DsN202uaKfR1Yi1Vk1YoEls/Gxa4PQRCBpbcxEjQl+DAQu9Dyldn/sy4BXmiBg9YrXD6LUBgQ\n24HCAJffNeIF1oYNdHm5A0T/KxjpFUar6S2VIqy7oFgsAgDu37+P1dVVAMCVK1fw85//HMVi0Zn+\nW1ROBrp9vUJJjwORNSsSXft/oLvHgSjQJfsIKAiItVUHuLzgBZbvSeDWa4AV3oivR5BAF72JkQnj\nLjAMA4uLi8hms7h48aIzFXixWMSvf/1rfPzxx57lZKBbGwYvK9Rrm7JAmF2RyG0g6u4l6trFdmWS\nJVpAbATtGAJcIkS9Bvy6atnleEJasfRm9ZwwImuaJkzTRKFQQC6XQ71eB2BZrewcXnw50zRJZAeG\nwELLiybQ7TbgA2FuXbtEflwZwgfExrHrWK9qAlxusD5VkcC69SQAlFixQQNdXoeiNzRWbFcAYE2q\n+P777wMAms0mDMNAtVrFysqKazkZ6BbGQRBr1q+8K7w16yW06KxT0NcTQNiA2Aj2ulwF0QNcXsj0\nhWXXAQcFNoQVq1JgiUBECXxVq1WcOnUK8/PzAPbFd319vcs1wJeTgW5xP4gstKyQioSWr9hG1Ic2\nrNgGD4iNdkRWXYDLDdmuWjKukojBLuqq1TPcAl9/vf05/nr7c899DcPA9evXAViugkwmg+XlZUxP\nT3e5BthyspDIhsVPFP22KwmEuSESYRu+a1dUFZAPiI1gL4YAlwiR39VNYP2s2JCHlanC7+2jtzMQ\nbj7ZzLl3kTn3rvP5849+3bV9bW3NmX3WMAzkcjmcPn0aANBoNLC0tCQsJ+uTfSXYaRBK4V/CQC+V\n7E9cdrvbT+io3AX+vA1swEq59TsAv7X+b3z2Nu49ncM9HMN9HMOXuz/CN79/B/gMQK1T7redfZQI\nrI1MV62Y3QRET9nDiNTCUqlUcPXqVczNzSGTySCVSiGfz6NSqaBcLmNmZgbz8/PCcrLQlOBRkPl5\n71cmUnJv0ey1fD5VtynEbYv2e7IHk2AamMhYaRKPwcpnOAsrXeKJ73Do8K7iAJcX36C7q5ZfoAsI\nLbJhRnTJiPKwCLeiKcF/+vJ/SJX9Teo/0JTgA0OkXAQdIvlnebeAXxnAvWuXCrwDYruA5W/dhMIA\nlxteXbW8yvdAYIlY0HVYbSR3wc2bN1W1I7nIfI0peSllfIoy/UKj8h2Au5Z4fgbLffAZLJfAZ51l\nA447AdubUC+wNqKeBPZ6QNmgAxaZe0lWbCyEcRf0gtAiW6lUsL6+rrItySWM0Eq/ZF5C6Samqn2y\nIu5asyT8Dt0ia4vuvU6Z2KJ/soEulohWLFmwfaWNEaml14T+vgzi+CUkidzjQDQSTNR/lu9xEBfc\nCLExhBzBFQYvgWWJmAAmKGShxoauU4KHsmRrtZp094XEI/vShHm5Ilmzop1j/JnsylfAo+a+Rfvn\nbcQvsIC3wHqdf4xWbJzPCqGtuyDU7Ww2m6rbQdgos2bDrIuLTkAMY4jP/yrCyyXgty7iYYieo2vg\nK7DIkhUbAdleA6z+Be5pwFbg5TbgDxQVvnsYv+6Pnf9ZfzCfS4BdFxV+KC2/LoIV63YYL8g6HVoC\n33o7G02j0UCz2UStVsPCwsLBgtvXmKOcA8bOhW6k9gTpyqW10Ir62PLr2GmznzN/28w+ovrsfUSC\nag+S4NfxP/VlBTqIwEYYeBCHwA6DGD+/DbRvK682MXN82em/isUitra23ANgE9eitGvwsK+kjBhq\nI7SAOJkMi6gvrZcg+YmVW0CKX+cmvKy4utXHt8VrwIFMm7ldRYeS2Udl2UFm7Fy30fXsIyXV6hr4\nohFfcSBr1cqWEw3o8oUVR68RYXxZdlsb3VYtv05kvfJWLb9O1E+XXeclvKIRXODKsPXy6zUV2GER\nVzcUjfg69vIzqbL3U+/SiK+BR9bqDGLRAgeNUk94S5U3idl1bFmg2wLmkbFseWuZ3xa3awDcNhkx\n9iBMLy8S2J6TGHcBIUkQoYVkWdGvf19EQ29ZoQXEYhuXCyGsa8BvRFsQgY3R/8ofUkU5QgqaEnwY\niTMgFkR9ZIX7AAANOElEQVScD+QvEPlp7fVseXabiCBi+3rneHG6BvhtFOAaJnY1na2WUh3GzSjU\nWzZ+PZGEyHTG53+2u+1jl7PLsOvsE55g1rHbxiT2f53b382twLfPzf8aUGDZe0YCOzDsvRiRWkRc\nuXKl63O1WkW5XHZmqAWAcrkMwzC61slAItsrtBZaWbHlhZQVS37dKLMvL7YTgn1E4szXybeHbyt/\nPhoGuEhgY6PdHpFaeNbW1lAul7vWra6uYnl5Ga1WC7VaDbVaDblcDvl8HrlcDrVaTbpdJLK9JA6h\ndTNKXeFFkz0orwJBxNZPOCcgL8hRxZU/txABLupBMHDstUelFp7Lly8jl8s5n0ulEs6cOQMAWFlZ\nccYB2NauaZrisQEukMj2mjisnsBCCxwUTK+De4mtXV7WhRDENcAfj29LkC8GHyjANfDsPjsktfix\nsbGBRqOBWq3mpHNdWFhANptFJpNBJpMJ1C4S2X4Qh//O69e/KyLx8rMOeQEL6kII6hoQHdvPxcHv\n60MY/ysJrHa0n49ILTLMzMw41mq5XMbW1hbm5uZQLBZRKBRQr9el20WPQL+Is+dBoPr5PrJ2ReAq\nA8S9EfieCyLsutkuWXY9fv5TL+ez6JghxNWtKr99VJYlIvNiT80Fn56eRjabBQCk02ncuXMHpmni\nww8/xOTkJNLpNEqlkjOpoh/0GPSTIN2wYhVaoFuc+O5bfmLL7iejVrx/w81yBVdOtM0mYHIXEtjh\n4Z//Efi//yhd/MKFCyiVSgCAVquFM2fOoF6vY3JyEgCQz+dhmqZ0fTSsVhdUD8UFDo5+DYyoHyyf\ntast2MYnkOEbEEZcFQir2+GD7KOqHLGPomG1+KNkRrm/Hes6XqlUwuXLl3Hjxg188MEHAKzcLJlM\nBnfu3MHq6ioAa7qtXC6HZrOJQqEg3zYSWY0IIoZB8x5EnfDRNb+BjYzY2niJq5/VGlJYbUhg9UOV\nyH4pWcePox8vCPRY6EScftogrgkhvDuBVSn+AH4KJpt+UHTsCNAAg2QT2ZCIB3o0dEObgJgXboIr\nK7Z9ElfRIWT2UVmWiA8SWUIarQJifvgllXETWzezUpGw8ocRHUpmH5VliXghkSUCIyuGQYQWCJHJ\nSwYvd4KNnSAG3HbFwmpD/tfh4lm/GyCGHhXdCSK0kCzL+mlj+fb3Ek1R0CsGSGCHD7JkidD0IiCG\nAMcIBC+mMYqrTHdamf1UlSV6C4ksEYm4A2L2fjY9t3BD4vYEk8AOHySyRGTiCogBB7uyxi64EfB6\nauNwDwQtS/QH8skSylAdEAPcxdauBwHqipOolqtfPWHLEf1Hh+dTAGXhGlSCiEQQofASq34Kjtd5\nkMASGkOP0SATh58W0MuqVeUa8KsrSllCDyRTF/QaepQGnbiEFuiv2KoUV7/6opQl9GGv3w0QQ49T\nEogjIMbSS7FVLa5+dYYpR+gJBb6I2IkjIMbiJ7ZRhZYElogCBb6InhBXQIzFTfDC1ukX1CKBJWRo\nSy4cXlN923N8RYFENon0wv/oJX6yYhunuJLADh8hRNZrqu9KpYL19fXIzSKRTSpBhSasFRpGbHUQ\nV7s8kRy2JRcOt6m+U6mUkmaRyCadoEISt9iqFtcwXxBRXCWEvuxJLgxuU33XajXk83klzSKRHQai\n+EmD7usntm77BCGK5U3imlxCuAtarZZwqu9ms6msWfTIDQtRov9h8hjwyWfcyoRtRxjoaU82IZ7v\nYrF4YKrvxcVFZVYsQI/dcKGym1WU5DNxJXHpRT2EvogmVwaAB7etxQV+qm97aTQaaDabqNVqXb7a\noNCjN2yoGjwQxLrttcUad33EYHH0nLXY/PNHzr8rKyuuU30Xi0VsbW1FDoDRlODDjOrO23EORtCh\nPiIeVE0J/p8l6/hvNCU40StUuA/4+myC5FOIA3qyhw9NR3zRozjsxJWc26/eOJ48epqHmySJrD38\n7P79+1hdXVXaIKKPiJ4GFQ8uWatEL9A0QUzgfrKGYWBxcRGFQgGmacIwjDjaRejCKLfo0g4SWIIn\nZO6CuAkssqZpolKpAAByuRxM01TeKEJjeiF2JKhEGDQV2cCPL9vFoVqt4v3331faIGIAieJmIAEl\nVJG0mRGq1SpOnTqF+fl5le0hkgL/ZLVd1hOEKnb63QAxoR95wzBw/fp19wLb15ijnAPGzoU9FJEE\nSFwJm+e3gfZt6/8XCuvVtHdBqMEIa2truHz5MgBLbPlxvqlUCnj9Jb1YBEG4Y4viI0WDERYl66j0\ndjBC4MBXpVLB1atXMTc3h0wm4z3kTNNvFoIg+kwc2hAi1WEviG9Y7etMtWTREgRhwwusKkv230vW\n8b+SOKy23bMjEQShM3H+utV0MELvpI+EliCGm7jdh0nrwhUKElqCGE56EZ/pg79Vht5LHgktQQwX\nvQqAaxpo74/ckdASxHDQS+FzmxnBh3K5jHQ6DdM0u0a0qqJ/Eylq+q1DEIQiev2Oh+jCVa1WAcDp\n61+r1ZQ3q7+z1ZLQEgShihAJYm7duoWpqSkAVsIrO/mVSvr/o51cBwSRPPphQIU4ZqvVQiaTcT43\nGg2FDbLQQ95IaAkiOfTrF2rIfrJxD0wgaSMIQh39dAG6Hbt9G9i7LdyUTqfRbDYBAA8fPsT09LTy\nZvXXJ8tC/lmCGGz6/Q67+mDPASPX9heGS5cuORMP1Ot1LC0tKW+WPiIL9P8mEQQRDh3e3eeSC8PC\nwgIAK5tgOp2OJT92bxLEBIWcGAQxOEQVWFUJYkYl62gnMUFMUCgQRhCDgQ4WrI1ObWHQy13AoukF\nIwiiA72jUugrsgDdRILQFXo3pdFbZAG6mQShG/ROBmIwPJ/koyUIPdBaYENmiImZwZEuElqC6C9a\nCyyga9buwZItElqC6A/aCyygayMHT7JIaAmit+ipXQLIklWHfdMHs/UEMTgMjMAC5JONA7JqCSIe\nBkpcbciSjQcSWoJQy0AKLKBrw5MhT+Q+IIjo6KlRA0+yZImsWoIIRyIEVk93gf4jvoIimMeHIAgX\nEvW+bEsuwSiXyzAMA8Vi8cC2mzdv+u6fPJG1ScyDQxAxkbh3JMRMij7UajXkcjnk83nkcrmu2Wwr\nlQrW19d960iuyAIJ+5YmCEUk9r0IkbVbgitXrgAATNN0knwDnRy2EiRbZG0S+UARRAgS/S6ot2QX\nFhaQzWaRyWS6ZrWt1WrI5/NSdQyHyAIJ/vYmCAmG4vlX75NttVqYm5tDsVhEoVBAvV4HAGfyRRmG\nLxZP3b2IYSPx4moTrneBKKCVyWSwvLyMYrGIDz/8EJOTk0in0yiVSlhcXJS2YoFhlhrq7kUknaER\nVxs3kf19ZxFTKBQ8a52cnAQA5PN5mKbpLI1GA81mE7VarctXyzPcMkNWLZFUhk5gAfeT/lFnsSlJ\n17iysoKbN28il8uh2Wx2CXKxWMTW1pZvAEzP2Wr7AQktkQQGUVxVzVaLgz/7xRT0n622XC4jnU7D\nNE1fU3tgIKuWGHQGUWCVkpARX9VqFQAcxy/bOTcReD2oz2/3qhW9I4nnBCTzvNzOaSh6DgwugUX2\n1q1bmJqaAgDkcjlUKhXljeo7bg9t+3aPG9IDknhOQDLPS3ROJK4M6vvJqiDwj+NWq9XVKbfRaCht\nkFZQDwRCV0hcBejpLgglIb10Gvcd8tUSOkHi6kFCZkZIp9POaIeHDx9ienpaXPCR3LjegePZR/1u\ngXqSeE5AMs8rieekjL+XKmW7O3tFYJG9dOkSNjY2kM/nUa/XsbS0dKDMUFm6BEH0HZ01J3Dgyx7Z\nYBgG0uk05ufnlTeK6B0y+TAJQjV2Zisbr5ytg47SwQiJ7D+L/bHN9+/fx+rqap9bo45KpYIbN27g\nN7/5Tb+booxqtYp6vX5gdM4gk7T3am1tDTdu3MC9e/cA7N8zO1fA6dOnPYepDhrKsnAltf+sYRhY\nXFxEoVCAaZowDKPfTVKGbD7MQWJ1dRXLy8totVqJeAa9kkYPKpcvX0Yul3M+J71bqDKRTeqFMk3T\nOZdcLgfTNPvcIjUEyYc5KJRKJZw5cwaANeY8KdaQW9LopJD0bqHKRDapF6pQKDg/0arVqvMSDzpB\n8mEOChsbG2g0GqjVaonxNbsljU4aOgeuoqI0aXeSL1S1WsWpU6cSEehLohVrMzMz41h75XK5z62J\njlvS6CQh3S10QFEmskm/UIZh4Pr16/1uhhJM00S5XMba2pqTDzMJTE9PI5vNArCexzt37vS5RdGx\nk0YvLy/j008/Rakkn6ZvULh06ZLjhnPrFjrIKBPZJF+otbU1rKysAEAiAl/Ly8tYXl5GKpWSyoc5\nKFy4cMF5BlutFs6ePdvnFqmBTRqdTqf73JrolEolbGxs4JNPPgGQ/G6hSrtwFYtFJziUhK4mgNXN\n6eLFi8hkMmg2myiVSjh//ny/m0W4UCwWkclksLGxkZhfHm5Jo4nBIJak3QRBEITF8MxWSxAE0QdI\nZAmCIGKERJYgCCJGSGQJgiBihESWIAgiRkhkCYIgYuRfAUonIAdzQf4TAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.cross_validation import train_test_split\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=3)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.grid_search import GridSearchCV\n", "\n", "tuned_parameters = [{'Nbin': np.arange(2, 20)}]\n", "\n", "def neg_mse(a, b):\n", " return -mse(a, b)\n", "\n", "gridSearch = GridSearchCV(MKSRegressionModel(Nbin=10), tuned_parameters, cv=5, score_func=neg_mse)\n", "gridSearch.fit(X_train, y_train)\n", "\n", "print(gridSearch.best_estimator_)\n", "\n", "\n", "for params, mean_score, scores in gridSearch.grid_scores_:\n", " print(\"%0.5f (+/-%0.5f) for %r\"% (mean_score, scores.std() / 2, params))\n", "\n", "y_true, y_pred = y_test, gridSearch.predict(X_test)\n", "print(mse(y_true, y_pred))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "MKSRegressionModel(Nbin=6)\n", "-0.00410 (+/-0.00009) for {'Nbin': 2}\n", "-0.00411 (+/-0.00009) for {'Nbin': 3}\n", "-0.00400 (+/-0.00008) for {'Nbin': 4}\n", "-0.00399 (+/-0.00008) for {'Nbin': 5}\n", "-0.00399 (+/-0.00008) for {'Nbin': 6}\n", "-0.00399 (+/-0.00008) for {'Nbin': 7}\n", "-0.00399 (+/-0.00008) for {'Nbin': 8}\n", "-0.00400 (+/-0.00008) for {'Nbin': 9}\n", "-0.00400 (+/-0.00008) for {'Nbin': 10}\n", "-0.00400 (+/-0.00008) for {'Nbin': 11}\n", "-0.00401 (+/-0.00008) for {'Nbin': 12}\n", "-0.00401 (+/-0.00008) for {'Nbin': 13}\n", "-0.00401 (+/-0.00008) for {'Nbin': 14}\n", "-0.00402 (+/-0.00008) for {'Nbin': 15}\n", "-0.00402 (+/-0.00008) for {'Nbin': 16}\n", "-0.00402 (+/-0.00008) for {'Nbin': 17}\n", "-0.00402 (+/-0.00008) for {'Nbin': 18}\n", "-0.00403 (+/-0.00008) for {'Nbin': 19}\n", "0.00392022262831" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "np.random.seed(11)\n", "X0 = np.random.random((1, 21, 21))\n", "dt = 1e-2\n", "dx = 0.25\n", "fipymodel = FiPyCHModel(dx=dx, dy=dx, dt=dt, a=1.)\n", "#a = fipymodel.predict(X0.copy())" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "np.maximum(np.array((0,1,2)), 1)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 32, "text": [ "array([1, 1, 2])" ] } ], "prompt_number": 32 }, { "cell_type": "code", "collapsed": false, "input": [ "import numexpr as ne\n", "\n", "X1 = X0.copy()\n", "data = []\n", "for step in range(701):\n", " y = fipymodel.predict(X1)\n", " X1 = ne.evaluate('X1 + dt * y')\n", " X1 = np.minimum(X1, 1)\n", " X1 = np.maximum(X1, 0)\n", " if step % 10 == 0:\n", " data.append(X1[0])\n", " print step," ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "10 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "20 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "30 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "40 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "50 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "60 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "70 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "80 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "90 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "110 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "120 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "130 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "140 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "150 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "160 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "170 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "180 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "190 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "210 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "220 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "230 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "240 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "250 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "260 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "270 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "280 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "290 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "310 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "320 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "330 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "340 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "350 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "360 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "370 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "380 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "390 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "410 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "420 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "430 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "440 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "450 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "460 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "470 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "480 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "490 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "510 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "520 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "530 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "540 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "550 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "560 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "570 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "580 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "590 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "610 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "620 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "630 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "640 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "650 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "660 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "670 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "680 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "690 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "700\n" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "# JSAnimation import available at https://github.com/jakevdp/JSAnimation\n", "from JSAnimation import IPython_display\n", "from matplotlib import animation\n", "\n", "# create a simple animation\n", "fig = plt.figure()\n", "ax = plt.axes()\n", "im = plt.imshow(X0[0], vmin=0.3, vmax=0.7)\n", "plt.colorbar()\n", "\n", "def init():\n", " im.set_array(X0[0])\n", " return im\n", "\n", "def animate(i):\n", " im.set_array(data[i])\n", " return im\n", "\n", "anim = animation.FuncAnimation(fig, animate, init_func=init,\n", " frames=len(data), interval=1, blit=True)\n", "\n", "from IPython.display import HTML\n", "plt.close(anim._fig)\n", "HTML(IPython_display.anim_to_html(anim))" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Once \n", " Loop \n", " Reflect \n", "
\n", "
\n", "\n", "\n", "\n" ], "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "2**8" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 71, "text": [ "256" ] } ], "prompt_number": 71 }, { "cell_type": "code", "collapsed": false, "input": [ "from pymks import FastMKSRegressionModel\n", "import numexpr\n", "np.random.seed(11)\n", "X0 = np.random.random((1, 256, 256))\n", "dt = 1e-3\n", "\n", "model = FastMKSRegressionModel(Nbin=6, threads=8)\n", "print X.shape\n", "print y.shape\n", "model.fit(X, y)\n", "model.resize_coeff(X0.shape[1:])\n", "data = []\n", "X1 = X0.copy()\n", "for step in range(15001):\n", " y1 = model.predict(X1)\n", " X1 = numexpr.evaluate('X1 + dt * y1')\n", " X1 = np.minimum(X1, 1)\n", " X1 = np.maximum(X1, 0)\n", " if step % 100 == 0:\n", " data.append(X1[0])\n", " print step,\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(3200, 11, 11)\n", "(3200, 11, 11)\n", "0" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "7000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "7100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "7200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "7300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "7400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "7500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "7600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "7700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "7800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "7900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "8000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "8100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "8200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "8300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "8400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "8500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "8600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "8700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "8800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "8900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "9000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "9100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "9200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "9300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "9400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "9500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "9600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "9700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "9800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "9900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "10000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "10100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "10200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "10300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "10400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "10500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "10600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "10700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "10800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "10900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "11000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "11100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "11200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "11300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "11400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "11500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "11600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "11700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "11800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "11900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "12000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "12100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "12200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "12300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "12400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "12500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "12600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "12700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "12800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "12900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "13000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "13100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "13200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "13300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "13400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "13500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "13600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "13700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "13800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "13900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "14000 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "14100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "14200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "14300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "14400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "14500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "14600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "14700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "14800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "14900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "15000\n" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "print len(data)\n", "print data[0][0,0]\n", "print data[1][0,0]\n", "print data[150][0,0]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "151\n", "0.444784411698\n", "0.48151012531\n", "0.51896227618\n" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "for d in data[::10]:\n", " print max(d.flatten())\n", " print min(d.flatten())" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0.881927544437\n", "0.114925168086\n", "0.613731183259\n", "0.384969616014\n", "0.669862815132\n", "0.33748519272\n", "0.772712312324\n", "0.251608785198" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "0.952949536614\n", "0.113355627358\n", "1.0\n", "0.0\n", "1.0\n", "0.0\n", "1.0" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "0.0\n", "1.0\n", "0.0\n", "1.0\n", "0.0\n", "1.0\n", "0.0" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "1.0\n", "0.0\n", "1.0\n", "0.0\n", "1.0\n", "0.0\n", "1.0" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "0.0\n", "1.0\n", "0.0\n" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import clear_output\n", "import time\n", "\n", "fig = plt.figure()\n", "ax = plt.axes()\n", "a = plt.imshow(X0[0], vmin=0.3, vmax=0.7)\n", "plt.colorbar()\n", "for d in data:\n", " a.set_array(d)\n", " plt.show()\n", " time.sleep(1)\n", " clear_output()\n", " display(fig)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "# JSAnimation import available at https://github.com/jakevdp/JSAnimation\n", "from JSAnimation import IPython_display\n", "from matplotlib import animation\n", "\n", "# create a simple animation\n", "fig = plt.figure()\n", "ax = plt.axes()\n", "im = plt.imshow(X0[0], vmin=0.0, vmax=1.0)\n", "plt.colorbar()\n", "\n", "def init():\n", " im.set_array(X0[0])\n", " return im\n", "\n", "def animate(i):\n", " im.set_array(data[i])\n", " return im\n", "\n", "anim = animation.FuncAnimation(fig, animate, init_func=init,\n", " frames=len(data), interval=1, blit=True)\n", "\n", "from IPython.display import HTML\n", "plt.close(anim._fig)\n", "HTML(IPython_display.anim_to_html(anim))" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Once \n", " Loop \n", " Reflect \n", "
\n", "
\n", "\n", "\n", "\n" ], "metadata": {}, "output_type": "pyout", "prompt_number": 26, "text": [ "" ] } ], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Notes\n", "\n", " - Speed up we `predict`?\n", " \n", " - Use explicit scheme." ] }, { "cell_type": "code", "collapsed": false, "input": [ "class A:\n", " def __init__(self):\n", " self.a = 1\n", " \n", "b = A()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "getattr(b, 'a')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "1" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "# pip install line_profiler\n", "%load_ext line_profiler\n", "from pymks import FastMKSRegressionModel\n", "\n", "np.random.seed(11)\n", "X0 = np.random.random((1, 1024, 1024))\n", "\n", "fast_model = FastMKSRegressionModel(Nbin=5, threads=8)\n", "slow_model = MKSRegressionModel(Nbin=5)\n", "\n", "fast_model.fit(X, y)\n", "fast_model.resize_coeff(X0.shape[1:])\n", "slow_model.fit(X, y)\n", "slow_model.resize_coeff(X0.shape[1:])\n", "\n", "X1 = X0.copy()\n", "#%lprun -f model.predict model.predict(X1.copy())\n", "%timeit fast_model.predict(X1.copy())\n", "%timeit slow_model.predict(X1.copy())" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The line_profiler extension is already loaded. To reload it, use:\n", " %reload_ext line_profiler\n", "1 loops, best of 3: 193 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "1 loops, best of 3: 596 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "%lprun -f slow_model.predict slow_model.predict(X1.copy())\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "%lprun -f fast_model._calcfft fast_model.predict(X1.copy())" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Testing multidimensional FFT in parallel in Ipython" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import time\n", "a = np.random.random((1024, 1024))\n", "t0 = time.time()\n", "b = a.copy()\n", "Fa = np.fft.fft(b)\n", "print time.time() - t0\n", "b = a.copy()\n", "t0 = time.time()\n", "Fa_ = _parallelFFT(b)\n", "print time.time() - t0\n", "print np.allclose(Fa, Fa_)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1.55386590958\n", "[0, 1, 2, 3, 4, 5, 6, 7]" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "2.50932002068" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "True" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "from parallelfft import _parallelFFT\n", "# pip install line_profiler\n", "%load_ext line_profiler\n", "a = np.random.random((1024 * 2**6,1024))\n", "b = a.copy()\n", "%lprun -f _parallelFFT _parallelFFT(b)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The line_profiler extension is already loaded. To reload it, use:\n", " %reload_ext line_profiler\n", "[0, 1, 2, 3, 4, 5, 6, 7]" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "import pyfftw\n", "N = 1024\n", "arr = np.random.random((N, N))\n", "print arr.dtype\n", "\n", "a = pyfftw.n_byte_align_empty((N, N), 16, 'complex128')\n", "b = pyfftw.n_byte_align_empty((N, N), 16, 'complex128')\n", "\n", "# Plan an fft over the last axis\n", "\n", "for threads in (1, 2, 3, 4, 5, 6, 7, 8):\n", " fft_object = pyfftw.FFTW(a, b, threads=threads, axes=(0, 1))\n", " a[:] = arr\n", " print 'number of threads:',threads\n", " %timeit b0 = fft_object(a)\n", " \n", "print 'numpy'\n", "a[:] = arr\n", "%timeit b1 = np.fft.fftn(a, axes=(0, 1))\n", "print np.allclose(b0, b1)" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "Invalid shapes: The input array and output array are invalid complementary shapes for their dtypes.", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 9\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mthreads\u001b[0m \u001b[1;32min\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m4\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m5\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m6\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m7\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m8\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 11\u001b[1;33m \u001b[0mfft_object\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpyfftw\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mFFTW\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mb\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mthreads\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mthreads\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxes\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 12\u001b[0m \u001b[0ma\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0marr\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[1;32mprint\u001b[0m \u001b[1;34m'number of threads:'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mthreads\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/.virtualenvs/default/local/lib/python2.7/site-packages/pyfftw/pyfftw.so\u001b[0m in \u001b[0;36mpyfftw.pyfftw.FFTW.__cinit__ (/home/wd15/.virtualenvs/default/build/pyfftw/pyfftw/pyfftw.c:6517)\u001b[1;34m()\u001b[0m\n", "\u001b[1;31mValueError\u001b[0m: Invalid shapes: The input array and output array are invalid complementary shapes for their dtypes." ] }, { "output_type": "stream", "stream": "stdout", "text": [ "float64\n" ] } ], "prompt_number": 46 } ], "metadata": {} } ] }