{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Improving Performance\n", "\n", "This notebook will\n", "\n", " - introduce parallel computing with IPython,\n", " - cross-validate in parallel,\n", " - introduce `numexpr` for improving the efficiency of `numpy`,\n", " - improve the efficiency of the FFT with `PyFFTW`,\n", " - implement this all in the `FastMKSRegressionModel` class and\n", " - run a full Cahn-Hilliard probelm with the `FastMKSRegressionModel`." ] }, { "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", "\n", "from pymks import MKSRegressionModel\n", "from pymks import FastMKSRegressionModel\n", "from pymks import FiPyCHModel\n", "from sklearn import metrics\n", "from sklearn.grid_search import GridSearchCV\n", "from pymks import FastMKSRegressionModel\n", "import numexpr\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": 42 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Parallel Data Generation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Generate a large(r) amount of data." ] }, { "cell_type": "code", "collapsed": false, "input": [ "np.random.seed(101)\n", "X = np.random.random((1000, 21, 21))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 43 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a \"direct view\" of the engines." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.parallel import Client\n", "engines = Client()\n", "dview = engines[:]\n", "dview.block = True\n", "dview.activate()\n", "print \"engines IDs\",engines.ids" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "engines IDs [0, 1, 2, 3, 4, 5, 6, 7]\n" ] } ], "prompt_number": 44 }, { "cell_type": "markdown", "metadata": {}, "source": [ "scatter the data." ] }, { "cell_type": "code", "collapsed": false, "input": [ "dview.scatter('X', X)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 45 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Perfom the calculation in parallel." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%px print X.shape" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[stdout:0] (125, 21, 21)\n", "[stdout:1] (125, 21, 21)\n", "[stdout:2] (125, 21, 21)\n", "[stdout:3] (125, 21, 21)\n", "[stdout:4] (125, 21, 21)\n", "[stdout:5] (125, 21, 21)\n", "[stdout:6] (125, 21, 21)\n", "[stdout:7] (125, 21, 21)\n" ] } ], "prompt_number": 48 }, { "cell_type": "code", "collapsed": false, "input": [ "%%px\n", "\n", "from pymks import FiPyCHMode\n", "y = FiPyCHModel().predict(X)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 46 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `map_sync` function returns a list which needs to be concatenated into one array." ] }, { "cell_type": "code", "collapsed": false, "input": [ "y = dview.gather('y')\n", "print y.dtype\n", "print y.shape" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "float64\n", "(1000, 21, 21)\n" ] } ], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Parallel Cross-Validation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Partition the data into training and test arrays." ] }, { "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": 50 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a dictionary of tuning parameters to search and define the optimization function." ] }, { "cell_type": "code", "collapsed": false, "input": [ "Nbins = np.arange(2, 20)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 51 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Setting `n_jobs=-1` uses all the available processors" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from pymks import MKSRegressionModel\n", "from sklearn import metrics\n", "from sklearn.grid_search import GridSearchCV\n", "tuning_parameters = [{'Nbin': Nbins}]\n", " \n", "def neg_mse(a, b):\n", " from sklearn import metrics\n", " mse = metrics.mean_squared_error\n", " return -mse(a, b)\n", "\n", "gridSearch = GridSearchCV(MKSRegressionModel(), tuning_parameters, cv=5,\n", " score_func=neg_mse, n_jobs=-1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 52 }, { "cell_type": "code", "collapsed": false, "input": [ "out = gridSearch.fit(X_train, y_train)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 53 }, { "cell_type": "code", "collapsed": false, "input": [ "print gridSearch.best_estimator_\n", "gridSearch.score(X_test, y_test)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "MKSRegressionModel(Nbin=5)\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 54, "text": [ "0.99998973068237618" ] } ], "prompt_number": 54 }, { "cell_type": "code", "collapsed": false, "input": [ "for params, mean_score, scores in gridSearch.grid_scores_:\n", " print(\"%1.3e (+/-%1.3e) for %r\"% (mean_score, scores.std() / 2, params))" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "for Nbin in Nbins:\n", " model = MKSRegressionModel(Nbin=Nbin)\n", " model.fit(X_train, y_train)\n", " y_true, y_pred = y_test, model.predict(X_test)\n", " print 'Nbin: {0}, mse: {1:1.3e}'.format(Nbin, mse(y_true, y_pred))" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercise 06-0\n", "\n", "Change the number of samples. How does the optimal `Nbin` change with number of samples? \n", "\n", "Evaluate time taken for `gridSearch.fit` for varying `n_jobs`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Evaluate the mean square error while varying Nspace in parallel (todo)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Numexpr" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The [Numexpr](http://code.google.com/p/numexpr/) package speeds up `numpy` calculations considerably. For example, take the following" ] }, { "cell_type": "code", "collapsed": false, "input": [ "np.random.seed(102)\n", "a = np.random.random(1e7)\n", "b = np.random.random(1e7)\n", "c = np.random.random(1e7)\n", "a.dtype" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 55, "text": [ "dtype('float64')" ] } ], "prompt_number": 55 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `%timeit` magic implicitly handles a number of common pit falls when timing Python expression execution." ] }, { "cell_type": "code", "collapsed": false, "input": [ "?%timeit" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `timeit` to time a regular Numpy calculation." ] }, { "cell_type": "code", "collapsed": false, "input": [ "d = a**2 + b**2 + 2*a*b\n", "%timeit a**2 + b**2 + 2*a*b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10 loops, best of 3: 194 ms per loop\n" ] } ], "prompt_number": 56 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Numpy calculations are quite slow when compared with the same code in\n", "C. This is due to the overhead from memory allocation for the intermediate arrays." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `timeit` to time a [`numexpr`](http://code.google.com/p/numexpr/) calculation." ] }, { "cell_type": "code", "collapsed": false, "input": [ "e = numexpr.evaluate('a**2 + b**2 + 2 * a * b')\n", "%timeit e = numexpr.evaluate('a**2 + b**2 + 2 * a * b')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10 loops, best of 3: 20.1 ms per loop\n" ] } ], "prompt_number": 57 }, { "cell_type": "code", "collapsed": false, "input": [ "np.all(d == e)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 58, "text": [ "True" ] } ], "prompt_number": 58 }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is no benefit for small expressions with no intermediate memory allocation." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit a**2" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10 loops, best of 3: 29.6 ms per loop\n" ] } ], "prompt_number": 59 }, { "cell_type": "code", "collapsed": false, "input": [ "numexpr.set_num_threads(8)\n", "%timeit numexpr.evaluate(\"a**2\")" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "100 loops, best of 3: 15.4 ms per loop\n" ] } ], "prompt_number": 61 }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Numexpr](http://code.google.com/p/numexpr/) uses multithreading by default." ] }, { "cell_type": "code", "collapsed": false, "input": [ "Nproc = 8\n", "for Nthread in range(1, Nproc + 1):\n", " print \"number of threads:\",Nthread\n", " numexpr.set_num_threads(Nthread)\n", " %timeit numexpr.evaluate('a**2 + b**2 + 2 * a * b')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "number of threads: 1\n", "10 loops, best of 3: 65.3 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "number of threads: 2\n", "10 loops, best of 3: 46.9 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "number of threads: 3\n", "10 loops, best of 3: 32.6 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "number of threads: 4\n", "10 loops, best of 3: 25.1 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "number of threads: 5\n", "10 loops, best of 3: 27.7 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "number of threads: 6\n", "10 loops, best of 3: 24.9 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "number of threads: 7\n", "10 loops, best of 3: 24.4 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "number of threads: 8\n", "10 loops, best of 3: 21.3 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 63 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another example." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit sin(a)**2 + cos(b)**2" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "operands could not be broadcast together with shapes (1024,16384) (10000000) ", "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[1;32m----> 1\u001b[1;33m \u001b[0mget_ipython\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mu'timeit sin(a)**2 + cos(b)**2'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32m/home/wd15/git/ipython/IPython/core/interactiveshell.pyc\u001b[0m in \u001b[0;36mmagic\u001b[1;34m(self, arg_s)\u001b[0m\n\u001b[0;32m 2181\u001b[0m \u001b[0mmagic_name\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmagic_arg_s\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0marg_s\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpartition\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m' '\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2182\u001b[0m \u001b[0mmagic_name\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmagic_name\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlstrip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mprefilter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mESC_MAGIC\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2183\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun_line_magic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmagic_name\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmagic_arg_s\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2184\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2185\u001b[0m \u001b[1;31m#-------------------------------------------------------------------------\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/ipython/IPython/core/interactiveshell.pyc\u001b[0m in \u001b[0;36mrun_line_magic\u001b[1;34m(self, magic_name, line)\u001b[0m\n\u001b[0;32m 2102\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'local_ns'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msys\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getframe\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstack_depth\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mf_locals\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2103\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2104\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2105\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2106\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/ipython/IPython/core/magics/execution.pyc\u001b[0m in \u001b[0;36mtimeit\u001b[1;34m(self, line, cell)\u001b[0m\n", "\u001b[1;32m/home/wd15/git/ipython/IPython/core/magic.pyc\u001b[0m in \u001b[0;36m\u001b[1;34m(f, *a, **k)\u001b[0m\n\u001b[0;32m 189\u001b[0m \u001b[1;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 190\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 191\u001b[1;33m \u001b[0mcall\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 192\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 193\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/ipython/IPython/core/magics/execution.pyc\u001b[0m in \u001b[0;36mtimeit\u001b[1;34m(self, line, cell)\u001b[0m\n\u001b[0;32m 984\u001b[0m \u001b[0mnumber\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 985\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0m_\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m10\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 986\u001b[1;33m \u001b[1;32mif\u001b[0m \u001b[0mtimer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtimeit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnumber\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>=\u001b[0m \u001b[1;36m0.2\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 987\u001b[0m \u001b[1;32mbreak\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 988\u001b[0m \u001b[0mnumber\u001b[0m \u001b[1;33m*=\u001b[0m \u001b[1;36m10\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/usr/lib/python2.7/timeit.pyc\u001b[0m in \u001b[0;36mtimeit\u001b[1;34m(self, number)\u001b[0m\n\u001b[0;32m 193\u001b[0m \u001b[0mgc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdisable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 194\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 195\u001b[1;33m \u001b[0mtiming\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minner\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mit\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtimer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 196\u001b[0m \u001b[1;32mfinally\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 197\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mgcold\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m\u001b[0m in \u001b[0;36minner\u001b[1;34m(_it, _timer)\u001b[0m\n", "\u001b[1;31mValueError\u001b[0m: operands could not be broadcast together with shapes (1024,16384) (10000000) " ] } ], "prompt_number": 67 }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit numexpr.evaluate('sin(a)**2 + cos(b)**2')" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PyFFTW" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using [PyFFTW](Whttp://hgomersall.github.io/pyFFTW/) offers substantial speed ups over Numpy's FFT." ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = np.random.random((1024, 16384))\n", "b_numpy = np.fft.fftn(a, axes=(0, 1))\n", "%timeit b_numpy = np.fft.fftn(a, axes=(0, 1))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 loops, best of 3: 1.13 s per loop\n" ] } ], "prompt_number": 64 }, { "cell_type": "markdown", "metadata": {}, "source": [ "PyFFTW requires the creation of a \"plan\" in order to optimize the FFT." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pyfftw\n", "\n", "input_array = pyfftw.n_byte_align_empty(a.shape, 16, 'complex128')\n", "output_array = pyfftw.n_byte_align_empty(a.shape, 16, 'complex128')\n", "fft_plan = pyfftw.FFTW(input_array, output_array, threads=Nproc, axes=(0, 1), direction='FFTW_FORWARD')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 65 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Much faster!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "input_array[:] = a;\n", "b_fftw = fft_plan()\n", "%timeit input_array[:] = a; b_fftw = fft_plan()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10 loops, best of 3: 172 ms per loop\n" ] } ], "prompt_number": 66 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The return types and values are the same." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print b_fftw.dtype\n", "print b_numpy.dtype" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "np.allclose(b_numpy, b_fftw)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As with Numexpr, threading does help for large arrays." ] }, { "cell_type": "code", "collapsed": false, "input": [ "for Nthread in range(1, Nproc + 1):\n", " fft_plan = pyfftw.FFTW(input_array, output_array, threads=Nthread, axes=(0, 1), direction='FFTW_FORWARD')\n", " print 'Nthread:',Nthread\n", " %timeit input_array[:] = a; b_fftw = fft_plan()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Nthread: 1\n", "1 loops, best of 3: 376 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Nthread:" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 2\n", "1 loops, best of 3: 224 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Nthread:" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 3\n", "10 loops, best of 3: 184 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Nthread:" ] }, { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mKeyboardInterrupt\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 2\u001b[0m \u001b[0mfft_plan\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[0minput_array\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moutput_array\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mthreads\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mNthread\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[0mdirection\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'FFTW_FORWARD'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mprint\u001b[0m \u001b[1;34m'Nthread:'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mNthread\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mget_ipython\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mu'timeit input_array[:] = a; b_fftw = fft_plan()'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32m/home/wd15/git/ipython/IPython/core/interactiveshell.pyc\u001b[0m in \u001b[0;36mmagic\u001b[1;34m(self, arg_s)\u001b[0m\n\u001b[0;32m 2181\u001b[0m \u001b[0mmagic_name\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmagic_arg_s\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0marg_s\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpartition\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m' '\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2182\u001b[0m \u001b[0mmagic_name\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmagic_name\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlstrip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mprefilter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mESC_MAGIC\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2183\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun_line_magic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmagic_name\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmagic_arg_s\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2184\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2185\u001b[0m \u001b[1;31m#-------------------------------------------------------------------------\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/ipython/IPython/core/interactiveshell.pyc\u001b[0m in \u001b[0;36mrun_line_magic\u001b[1;34m(self, magic_name, line)\u001b[0m\n\u001b[0;32m 2102\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'local_ns'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msys\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getframe\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstack_depth\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mf_locals\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2103\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2104\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2105\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2106\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/ipython/IPython/core/magics/execution.pyc\u001b[0m in \u001b[0;36mtimeit\u001b[1;34m(self, line, cell)\u001b[0m\n", "\u001b[1;32m/home/wd15/git/ipython/IPython/core/magic.pyc\u001b[0m in \u001b[0;36m\u001b[1;34m(f, *a, **k)\u001b[0m\n\u001b[0;32m 189\u001b[0m \u001b[1;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 190\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 191\u001b[1;33m \u001b[0mcall\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 192\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 193\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/ipython/IPython/core/magics/execution.pyc\u001b[0m in \u001b[0;36mtimeit\u001b[1;34m(self, line, cell)\u001b[0m\n\u001b[0;32m 984\u001b[0m \u001b[0mnumber\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 985\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0m_\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m10\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 986\u001b[1;33m \u001b[1;32mif\u001b[0m \u001b[0mtimer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtimeit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnumber\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>=\u001b[0m \u001b[1;36m0.2\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 987\u001b[0m \u001b[1;32mbreak\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 988\u001b[0m \u001b[0mnumber\u001b[0m \u001b[1;33m*=\u001b[0m \u001b[1;36m10\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/usr/lib/python2.7/timeit.pyc\u001b[0m in \u001b[0;36mtimeit\u001b[1;34m(self, number)\u001b[0m\n\u001b[0;32m 193\u001b[0m \u001b[0mgc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdisable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 194\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 195\u001b[1;33m \u001b[0mtiming\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minner\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mit\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtimer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 196\u001b[0m \u001b[1;32mfinally\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 197\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mgcold\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m\u001b[0m in \u001b[0;36minner\u001b[1;34m(_it, _timer)\u001b[0m\n", "\u001b[1;31mKeyboardInterrupt\u001b[0m: " ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 4\n" ] } ], "prompt_number": 68 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercise 06-01\n", "\n", "Identify the bottle necks in the `MKSRegressionModel` using the `line_profiler` and improve things with Numexpr and PyFFTW. Plot the relative speed up versus `Nbin`.\n", "\n", " - start by subclassing `MKSRegressionModel` and then speed up the `predict` method" ] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## `FastMKSRegressionModel`\n", "\n", "Using Numexpr and PyFFTW, we can make improvements to the `MKSRegressionModel`. The `FastMKSRegressionModel` overwrites a number of methods in `MKSRegressionModel`. `FastMKSRegressionModel` only improves the `predict` method, not the `fit` method." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and it can be tested" ] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's compare the two classes." ] }, { "cell_type": "code", "collapsed": false, "input": [ "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", "y_fast = fast_model.predict(X0.copy())\n", "\n", "slow_model.fit(X, y)\n", "slow_model.resize_coeff(X0.shape[1:])\n", "y_slow = fast_model.predict(X0.copy())\n", "\n", "print np.allclose(y_fast, y_slow)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "They give the same result, but what about efficiency gains." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit slow_model.predict(X0.copy())" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit fast_model.predict(X0.copy())" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is better for small `Nbin` at the moment. Plot of speed up versus `Nbin`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Comparing MKS and FiPy" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import clear_output\n", "import time\n", "from pymks import FiPyCHModel\n", "N = 41\n", "np.random.seed(13)\n", "phi0 = np.random.random((1, N, N))\n", "\n", "model = FastMKSRegressionModel(Nbin=5)\n", "model.fit(X, y)\n", "model.resize_coeff((N, N))\n", "\n", "fig = plt.figure()\n", "\n", "fipymodel = FiPyCHModel()\n", "fipy_phi1 = phi0.copy()\n", "mks_phi1 = phi0.copy()\n", "steps = 30\n", "dt=1e-8\n", "for i in range(steps):\n", " fipy_response = fipymodel.predict(fipy_phi1)\n", " mks_response = model.predict(mks_phi1)\n", " #Euler forward\n", " fipy_phi1 = fipy_response * dt + fipy_phi1\n", " mks_phi1 = mks_response * dt + mks_phi1\n", " mks_phi1 = np.minimum(mks_phi1, 1)\n", " mks_phi1 = np.maximum(mks_phi1, 0)\n", " #print phi0\n", " plt.subplot(1,2,1)\n", " plt.title('FiPy')\n", " a = plt.imshow(fipy_phi1.reshape((N, N)), vmin=0.0, vmax=1.0)\n", " plt.subplot(1,2,2)\n", " plt.title('MKS')\n", " b = plt.imshow(mks_phi1.reshape((N, N)), vmin=0.0, vmax=1.0)\n", " time.sleep(1)\n", " clear_output()\n", " display(fig)\n", " print i" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAC+CAYAAAAV6+UUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvcuPZdd56Pdbj/06j6pT1U1Rlm9ssqlMEgRXlOjkOpkQ\nlyId4CIZWKIkIJlZlPwHxKA9ozMRJBnIMJatSWYGRTpAZjYpR0GAILnmJYEEyMRR0zaiB9Xsep7H\nfq6VwbfW3vtUd5Pdza7upnI+YPepqj51aj9++9vfeynvvWcnO9nJTnbyqRH9qHdgJzvZyU52cm+y\nU9w72clOdvIpk53i3slOdrKTT5nsFPdOdrKTnXzKZKe4d7KTnezkUyY7xX0JorW+Zbty5Qrvvfce\nzz33XP++g4ODrfd8/vOf580333yEe76Tnezk0yA7xX1J8u6773JyctJvN2/e5Nq1a3z3u9/t36OU\n2nrfq6++yssvv8w//uM/Prod38lObiMnJydorfnDP/zDW/7v5ZdfRmu99b6xXL9+ncPDQ/76r/8a\nkHvjxRdfRGvN4eEhX/va1zg9Pb38g/g1kp3iviRZLBbs7e31G8BPf/pTXn311VveG9/zyiuvcO3a\nNX7605/y7W9/m+9///v9e1599VX++I//+KHt/052cjv50Y9+dMvP3n77bZRSt33/9evXee655/jh\nD3/I7//+7wPwwgsv8Nxzz3H9+nXef/99Dg8PeeGFFy51v3/dZKe4L0nutq9p/L633nqL69ev88wz\nz/DSSy/x1ltv9f/35ptv8o1vfOOB7+dOdnIv8txzz/Hee+/137/99tu8+OKLt+X95OSE5557ju99\n73u90r5+/Tqnp6d85zvf4amnnmJ/f58///M/58qVKw/tGH4dZKe4L0meeeaZrfj13/3d393yHu89\nX/rSl/r3/N7v/R7f+973eOqpp/jKV77C22+/DQjsR0dHfOELX3jYh7GTnWzJyy+/zA9+8IP++zfe\neIOvf/3rt7zv/fff50tf+hLf/va3+eY3v9n//Nq1a1y7do2XXnqJH//4x/3P/+Zv/uZyd/zXTNSu\n5f3Bi9aat99+m2vXrvU/e+qpp3j33Xf51re+xTvvvAPA4eEhb7zxRv++p556autzXnrpJV599VX+\n3b/7dxwfH/Od73znoR3DTnYylpOTEw4PDzk+Pubpp5/m6OgIEIaPjo7QWuOc69937do1nnnmGW7e\nvNnzPpa//Mu/5Ec/+hHvvPMOzz33HD/4wQ94+umnH/ZhfWplZ3Ffkly7do2nnnqq3+4kh4eHd3zP\niy++yOuvv87rr79+W6tmJzt52LK/v9+HS95++21+53d+57bv+5M/+ZPeih7naqK88sor/O3f/i1H\nR0e8/PLLPPPMM7z//vuXuu+/TrJT3I+xfPWrX+X111/n/fff34VJdvLYyMsvv8xf/dVf8cYbb/Dt\nb3/7tu/5gz/4A0CSma+++mqvlN944w1eeumlrfe+8sorfPGLX9yKne/ko8U+6h34dZQ7Zdg/7v8u\nytNPP82VK1d48cUXH8Ru7WQnD0Refvnlns3vfe97H/nep59+mu9+97u8/PLLvPPOO3z5y1/ma1/7\nGt///vf5yle+Aogyf++99/jyl7/8MHb/10J2FvclSNd1tw19fPGLX+Tv//7v++/vJuG4WCzuaNXs\nZCcPU6LRsVgseOaZZ3jmmWf6UtexQXLROPmjP/ojAP7sz/6MxWLBT3/6U9566y2ee+45Pv/5z/Oj\nH/2It956q/+snXy87JKTj7G89dZbfOMb3+DmzZuPeld2spOdPEays7gfU4llVrdreNjJTnby/2+5\nL4v7zTffZLFYcP36dV555ZXL2K+d7OShy47rnXxa5J4t7nfffRegb1HdZYJ38usgO6538mmSe64q\nef311/tynmvXrvH222/z7LPPbr3nXiondrKT+5EHnZq5G65hx/ZOLl/uhu17VtyxMyrKnRJn/63/\nb/hfXvtf+TevPUtOSUbFhDUTVkxYU7BB4dE4NJ4Ww4aCDRM2FNSktFgaEhoSnnQf8Fn/S550H3Do\njjA1mNqja0+pco7yA46yBTfzBSdqwTEHnLDgyB/yTyfX+Mew3fjv/nv4z1+DXyGbBq4Ah/I6ubJk\neuWM2ZVTJgdLORgFSkFGxQHHHHLEAccYun7/WizH/oAjd8ixO+CMPYzq0NqhlSNXJXucsccpe5wx\n55w9zplzzv/x2tu88Nq/wqHwKFosK2YsmbJixoaCkpzKZ5TknG4WnCyvcLK6wun6ABSABwUze84z\n03/g2vT/4dr0H/gt+898jp/zOX7G5/g5S2Ycc9ifn/jZJTkrpv2e/e+vvc1Tr/3XbCjC1ZqQ0JBS\n968Z1da1nYfjmXHOhgnHLDgJf+fG+kk+XH+GDzefYdNO2J8csyiOWEyOuGpv8CQfhO2XWDp8OBce\n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\nvD/Sv8wzznCr11TJiHMTpgmwSVc4zqdbT6yajjO340yuT3pQc1+tarRU7NA++Xwr1a98mvO5Z80/\nx98pcO/Cls63dKGl9w2DrVMBzZUltfnImhX5zEYbwEjg3/+nwH/4j44n/ppN2PN//MXbGcL5JlzD\n+8/20sO+75R8H9kuWi0y4lxySjbxVba3E6v2YWzvMeW1yAPY/hd+h//Oj/mcj2a20/mmbE+JbSue\nf/+fJv7Df7Q89VdvxPbXGu6//Mu/5E/+5E8ABf0Xv/gFv/rVr/jZz37GP/zDP5S84P3jZXPJXtZc\nyyXXRhtkMsj5zF0lezYM1AXWgMExJuA4ya3lynf2CAJWl9/6imGqGccKa7y2ockdgz0dsM1DAEu4\nM0ZLI5iDN5cC1Owj5P7b1HmZXhMEhGFR7MiC8Rm6SFZO1ba2/GTOHsxS+Ep7ePWG0YuU+9TVl1qG\nr/qv7nnczmOaBHdVPjj9WZuJtjlyZu94wjUbmUd9K8ZFikQ7iItcZ8q1Ltu8ll+PrPgNH/Ob+DG/\n4WMOYT1fk6lirBRsH+2JQVHTMS5KZvvSumZyh4EZWMmRjXU0Wbf9Wx7flOv3ne1lZ1YuhP42sF3d\niybZQumkzGxvJ9r2yJl7GNtTioCyBtGy9/yU7ZbP+JjP+BGf8xH7uGHwNcNY63X5BmzbxLaKlB0Y\n3pDtrzTcv/zlL/nTP/1T/uIv/oKXL1/yV3/1V/z0pz/lV7/6FZ988gmXl5f8/u///mu/96q6YMf2\nJNe3FEO6L8k4t0UpXA5PHQdWsWPDXi9hlAS7146DdPY0+GiJXhh82rEYF0tEFzfEMgzN5324l4Bb\nfMnFzdNcJLBn3WLglcpyniDLN1D5PaL9tMvM9F3qPL/ljAObxc1rqBjLhffY4jlkwJetjyI6OSY1\n0AJOw2tJf1evejbNnnN3w1N5sWgQu8Piy+s5pFHtAxv2cTMPH8kM92zSR7rY8kX8kOfxA17Gp3Sh\nZfKOaXJMo24WF6OvTTsl1OgMscbiWXMoBR1QbyT9iyTmdGBDQ0WPJje/+fFtuP4+sp3Z/a7ZzqkS\nfah9O7Yjog+HzPYKpJpliEUizYPYzr1Xrf53XJeJaCfLsagF27Q8jx/wAu0oOYYVo6+YporxW7Hd\n0xqdd9i+Idtfabh//vOfl/BxeeTizs9+9rMv/d48tHLFE57zQXlSHVlxiGvy4IiRwFr2Kfc294Y+\n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\n9957j7/8y7/s/u6yz9n777/PnTt3+Iu/+ItX5jNB3yQDr8a1exXOCVxx/TTr28j2CzfcrwJAw/Xz\nn/+cN9/sk0e//e1vOTg4APpGi5e57ty5ww9+8AN+9rOfcffuXe7cudOdo8s6Z3fu3OHOnTt7XYOv\nynU82yRzmdfuVTkncMX103yubyPbL9xwXzZAX7dOT0/P3WhxEevu3bvdOXnzzTe5e/cuv/nNb5jP\n593fvexzduvWLX79618Drr75rbfeunQjCc/XJHMR61Vm+4rrx69vK9svXB3wsgE6z7rMfOxQvOiT\nTz7hpz/9Kf/4j/+4Vzd8GedssVhw+/ZtfvnLX3Y/X/Z1fJ4mmYtYrzrbV1w/fn0b2b4QWddXuVDl\naRotLnJ98skn/PEf/3Gnh3HZ52w2m/Huu+/yox/9iLfffvvSP9PzNslc1Lrs6/Sk9SqcG3j1uIZv\nJ9svPFTyqgD0pPXTn/6Uu3fvAnxto8VFrjt37vDXf/3XwOWfs08++aSL87399tu8//77l/6Z7t69\nywcffMDt27f3mmQu89pd9jn5qnXZ5yasV4lr+Pay/cIN96sCUFjvv/8+H3/8MX/3d38H0HkCd+7c\nYT6f8/3vf/+lf6bbt293GtB37ty59HN2586dDuTT01P+8A//8NI/009+8hN+8pOfIIRgsVgghLj0\na3fZ52S4rrg+3/q2sn0hDTjvvfdel6D4KkH6/xbXhx9+yJ//+Z9zeHjI8fEx77//Pn/6p396qeds\nsVjw29/+FnDeQPCYrq7jo+vqnDx+vYpcw7eX7avOyat1ta7W1fqGrf8mOiev1tW6Wlfr27SuDPfV\nulpX62p9w9aV4b5aV+tqXa1v2Loy3Ffral2tq/UNW1eG+2pdrat1tb5h68pwX62rdbWu1jds/f+d\nPcmEA61CVgAAAABJRU5ErkJggg==\n", "text": [ "" ] }, { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mKeyboardInterrupt\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 18\u001b[0m \u001b[0mdt\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1e-8\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 19\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msteps\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m \u001b[0mfipy_response\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfipymodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfipy_phi1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 21\u001b[0m \u001b[0mmks_response\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmks_phi1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 22\u001b[0m \u001b[1;31m#Euler forward\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/pymks/pymks/fipyCHModel.pyc\u001b[0m in \u001b[0;36mpredict\u001b[1;34m(self, X)\u001b[0m\n\u001b[0;32m 31\u001b[0m \u001b[0mphi\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mflatten\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 32\u001b[0m \u001b[0mphi\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdateOld\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 33\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_solve\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0meq\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mphi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mLinearLUSolver\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdt\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 34\u001b[0m \u001b[1;31m# eq.solve(phi, dt=self.dt, solver=LinearLUSolver())\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 35\u001b[0m \u001b[0mphi_ij\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mphi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mny\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/pymks/pymks/fipyCHModel.pyc\u001b[0m in \u001b[0;36m_solve\u001b[1;34m(self, eq, phi, solver, dt)\u001b[0m\n\u001b[0;32m 42\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 43\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0msweep\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 44\u001b[1;33m \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0meq\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msweep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mphi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdt\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdt\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msolver\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mLinearLUSolver\u001b[0m\u001b[1;33m(\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 45\u001b[0m \u001b[1;31m# print 'res',res\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 46\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/fipy/fipy/terms/term.pyc\u001b[0m in \u001b[0;36msweep\u001b[1;34m(self, var, solver, boundaryConditions, dt, underRelaxation, residualFn, cacheResidual, cacheError)\u001b[0m\n\u001b[0;32m 234\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 235\u001b[0m \"\"\"\n\u001b[1;32m--> 236\u001b[1;33m \u001b[0msolver\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_prepareLinearSystem\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvar\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mvar\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msolver\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msolver\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mboundaryConditions\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mboundaryConditions\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdt\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdt\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 237\u001b[0m \u001b[0msolver\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_applyUnderRelaxation\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0munderRelaxation\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0munderRelaxation\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 238\u001b[0m \u001b[0mresidual\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msolver\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_calcResidual\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresidualFn\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mresidualFn\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/fipy/fipy/terms/term.pyc\u001b[0m in \u001b[0;36m_prepareLinearSystem\u001b[1;34m(self, var, solver, boundaryConditions, dt)\u001b[0m\n\u001b[0;32m 166\u001b[0m \u001b[0mboundaryConditions\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mboundaryConditions\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 167\u001b[0m \u001b[0mdt\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdt\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 168\u001b[1;33m \u001b[0mtransientGeomCoeff\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getTransientGeomCoeff\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvar\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 169\u001b[0m \u001b[0mdiffusionGeomCoeff\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getDiffusionGeomCoeff\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvar\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 170\u001b[0m buildExplicitIfOther=self._buildExplcitIfOther)\n", "\u001b[1;32m/home/wd15/git/fipy/fipy/terms/binaryTerm.pyc\u001b[0m in \u001b[0;36m_getTransientGeomCoeff\u001b[1;34m(self, var)\u001b[0m\n\u001b[0;32m 94\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 95\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_getTransientGeomCoeff\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 96\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_addNone\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mterm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getTransientGeomCoeff\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvar\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mother\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getTransientGeomCoeff\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvar\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 97\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 98\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_getDiffusionGeomCoeff\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/fipy/fipy/terms/transientTerm.pyc\u001b[0m in \u001b[0;36m_getTransientGeomCoeff\u001b[1;34m(self, var)\u001b[0m\n\u001b[0;32m 144\u001b[0m \"\"\"\n\u001b[0;32m 145\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mvar\u001b[0m \u001b[1;32mis\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvar\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvar\u001b[0m \u001b[1;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 146\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getGeomCoeff\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvar\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 147\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 148\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/fipy/fipy/terms/term.pyc\u001b[0m in \u001b[0;36m_getGeomCoeff\u001b[1;34m(self, var)\u001b[0m\n\u001b[0;32m 463\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_getGeomCoeff\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 464\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgeomCoeff\u001b[0m \u001b[1;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 465\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgeomCoeff\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_calcGeomCoeff\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvar\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 466\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgeomCoeff\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 467\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgeomCoeff\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdontCacheMe\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/fipy/fipy/terms/transientTerm.pyc\u001b[0m in \u001b[0;36m_calcGeomCoeff\u001b[1;34m(self, var)\u001b[0m\n\u001b[0;32m 116\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcoeff\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mnumerix\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnewaxis\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mnumerix\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvar\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmesh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcellVolumes\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 117\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 118\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcoeff\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mnumerix\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvar\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmesh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcellVolumes\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 119\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 120\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_getTransientGeomCoeff\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/fipy/fipy/variables/variable.pyc\u001b[0m in \u001b[0;36m__mul__\u001b[1;34m(self, other)\u001b[0m\n\u001b[0;32m 1149\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mother\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1150\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1151\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_BinaryOperatorVariable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;32mlambda\u001b[0m \u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mb\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[0mother\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1152\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1153\u001b[0m \u001b[0m__rmul__\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m__mul__\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/fipy/fipy/variables/variable.pyc\u001b[0m in \u001b[0;36m_BinaryOperatorVariable\u001b[1;34m(self, op, other, operatorClass, opShape, canInline, unit)\u001b[0m\n\u001b[0;32m 1123\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1124\u001b[0m return binOp(op=op, var=[self, other], opShape=opShape, canInline=canInline, unit=unit, \n\u001b[1;32m-> 1125\u001b[1;33m inlineComment=inline._operatorVariableComment(canInline=canInline))\n\u001b[0m\u001b[0;32m 1126\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1127\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__add__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mother\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/fipy/fipy/variables/operatorVariable.pyc\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, op, var, opShape, canInline, unit, inlineComment, *args, **kwargs)\u001b[0m\n\u001b[0;32m 52\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m''\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 53\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mvar\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvar\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m#C does not accept units\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 54\u001b[1;33m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0munit\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0misDimensionless\u001b[0m\u001b[1;33m(\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 55\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcanInline\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 56\u001b[0m \u001b[1;32mbreak\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/fipy/fipy/variables/variable.pyc\u001b[0m in \u001b[0;36m_getUnit\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 253\u001b[0m \u001b[1;33m<\u001b[0m\u001b[0mPhysicalUnit\u001b[0m \u001b[0mm\u001b[0m\u001b[1;33m>\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 254\u001b[0m \"\"\"\n\u001b[1;32m--> 255\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_extractUnit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 256\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 257\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0mgetsetDeprecated\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/fipy/fipy/variables/variable.pyc\u001b[0m in \u001b[0;36m_getValue\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 545\u001b[0m \u001b[0mvalue\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_value\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 546\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 547\u001b[1;33m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconstraints\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 548\u001b[0m \u001b[0mvalue\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcopy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 549\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mconstraint\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconstraints\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/wd15/git/fipy/fipy/variables/variable.pyc\u001b[0m in \u001b[0;36mconstraints\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 570\u001b[0m \u001b[0mvalue\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mproperty\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m_getValue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_setValueProperty\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 571\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 572\u001b[1;33m \u001b[1;33m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 573\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mconstraints\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 574\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"_constraints\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mKeyboardInterrupt\u001b[0m: " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAC+CAYAAAAV6+UUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvcuPZdd56Pdbj/06j6pT1U1Rlm9ssqlMEgRXlOjkOpkQ\nlyId4CIZWKIkIJlZlPwHxKA9ozMRJBnIMJatSWYGRTpAZjYpR0GAILnmJYEEyMRR0zaiB9Xsep7H\nfq6VwbfW3vtUd5Pdza7upnI+YPepqj51aj9++9vfeynvvWcnO9nJTnbyqRH9qHdgJzvZyU52cm+y\nU9w72clOdvIpk53i3slOdrKTT5nsFPdOdrKTnXzKZKe4d7KTnezkUyY7xX0JorW+Zbty5Qrvvfce\nzz33XP++g4ODrfd8/vOf580333yEe76Tnezk0yA7xX1J8u6773JyctJvN2/e5Nq1a3z3u9/t36OU\n2nrfq6++yssvv8w//uM/Prod38lObiMnJydorfnDP/zDW/7v5ZdfRmu99b6xXL9+ncPDQ/76r/8a\nkHvjxRdfRGvN4eEhX/va1zg9Pb38g/g1kp3iviRZLBbs7e31G8BPf/pTXn311VveG9/zyiuvcO3a\nNX7605/y7W9/m+9///v9e1599VX++I//+KHt/052cjv50Y9+dMvP3n77bZRSt33/9evXee655/jh\nD3/I7//+7wPwwgsv8Nxzz3H9+nXef/99Dg8PeeGFFy51v3/dZKe4L0nutq9p/L633nqL69ev88wz\nz/DSSy/x1ltv9f/35ptv8o1vfOOB7+dOdnIv8txzz/Hee+/137/99tu8+OKLt+X95OSE5557ju99\n73u90r5+/Tqnp6d85zvf4amnnmJ/f58///M/58qVKw/tGH4dZKe4L0meeeaZrfj13/3d393yHu89\nX/rSl/r3/N7v/R7f+973eOqpp/jKV77C22+/DQjsR0dHfOELX3jYh7GTnWzJyy+/zA9+8IP++zfe\neIOvf/3rt7zv/fff50tf+hLf/va3+eY3v9n//Nq1a1y7do2XXnqJH//4x/3P/+Zv/uZyd/zXTNSu\n5f3Bi9aat99+m2vXrvU/e+qpp3j33Xf51re+xTvvvAPA4eEhb7zxRv++p556autzXnrpJV599VX+\n3b/7dxwfH/Od73znoR3DTnYylpOTEw4PDzk+Pubpp5/m6OgIEIaPjo7QWuOc69937do1nnnmGW7e\nvNnzPpa//Mu/5Ec/+hHvvPMOzz33HD/4wQ94+umnH/ZhfWplZ3Ffkly7do2nnnqq3+4kh4eHd3zP\niy++yOuvv87rr79+W6tmJzt52LK/v9+HS95++21+53d+57bv+5M/+ZPeih7naqK88sor/O3f/i1H\nR0e8/PLLPPPMM7z//vuXuu+/TrJT3I+xfPWrX+X111/n/fff34VJdvLYyMsvv8xf/dVf8cYbb/Dt\nb3/7tu/5gz/4A0CSma+++mqvlN944w1eeumlrfe+8sorfPGLX9yKne/ko8U+6h34dZQ7Zdg/7v8u\nytNPP82VK1d48cUXH8Ru7WQnD0Refvnlns3vfe97H/nep59+mu9+97u8/PLLvPPOO3z5y1/ma1/7\nGt///vf5yle+Aogyf++99/jyl7/8MHb/10J2FvclSNd1tw19fPGLX+Tv//7v++/vJuG4WCzuaNXs\nZCcPU6LRsVgseOaZZ3jmmWf6UtexQXLROPmjP/ojAP7sz/6MxWLBT3/6U9566y2ee+45Pv/5z/Oj\nH/2It956q/+snXy87JKTj7G89dZbfOMb3+DmzZuPeld2spOdPEays7gfU4llVrdreNjJTnby/2+5\nL4v7zTffZLFYcP36dV555ZXL2K+d7OShy47rnXxa5J4t7nfffRegb1HdZYJ38usgO6538mmSe64q\nef311/tynmvXrvH222/z7LPPbr3nXiondrKT+5EHnZq5G65hx/ZOLl/uhu17VtyxMyrKnRJn/63/\nb/hfXvtf+TevPUtOSUbFhDUTVkxYU7BB4dE4NJ4Ww4aCDRM2FNSktFgaEhoSnnQf8Fn/S550H3Do\njjA1mNqja0+pco7yA46yBTfzBSdqwTEHnLDgyB/yTyfX+Mew3fjv/nv4z1+DXyGbBq4Ah/I6ubJk\neuWM2ZVTJgdLORgFSkFGxQHHHHLEAccYun7/WizH/oAjd8ixO+CMPYzq0NqhlSNXJXucsccpe5wx\n55w9zplzzv/x2tu88Nq/wqHwKFosK2YsmbJixoaCkpzKZ5TknG4WnCyvcLK6wun6ABSABwUze84z\n03/g2vT/4dr0H/gt+898jp/zOX7G5/g5S2Ycc9ifn/jZJTkrpv2e/e+vvc1Tr/3XbCjC1ZqQ0JBS\n968Z1da1nYfjmXHOhgnHLDgJf+fG+kk+XH+GDzefYdNO2J8csyiOWEyOuGpv8CQfhO2XWDp8OBce\n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\nvD/Sv8wzznCr11TJiHMTpgmwSVc4zqdbT6yajjO340yuT3pQc1+tarRU7NA++Xwr1a98mvO5Z80/\nx98pcO/Cls63dKGl9w2DrVMBzZUltfnImhX5zEYbwEjg3/+nwH/4j44n/ppN2PN//MXbGcL5JlzD\n+8/20sO+75R8H9kuWi0y4lxySjbxVba3E6v2YWzvMeW1yAPY/hd+h//Oj/mcj2a20/mmbE+JbSue\nf/+fJv7Df7Q89VdvxPbXGu6//Mu/5E/+5E8ABf0Xv/gFv/rVr/jZz37GP/zDP5S84P3jZXPJXtZc\nyyXXRhtkMsj5zF0lezYM1AXWgMExJuA4ya3lynf2CAJWl9/6imGqGccKa7y2ockdgz0dsM1DAEu4\nM0ZLI5iDN5cC1Owj5P7b1HmZXhMEhGFR7MiC8Rm6SFZO1ba2/GTOHsxS+Ep7ePWG0YuU+9TVl1qG\nr/qv7nnczmOaBHdVPjj9WZuJtjlyZu94wjUbmUd9K8ZFikQ7iItcZ8q1Ltu8ll+PrPgNH/Ob+DG/\n4WMOYT1fk6lirBRsH+2JQVHTMS5KZvvSumZyh4EZWMmRjXU0Wbf9Wx7flOv3ne1lZ1YuhP42sF3d\niybZQumkzGxvJ9r2yJl7GNtTioCyBtGy9/yU7ZbP+JjP+BGf8xH7uGHwNcNY63X5BmzbxLaKlB0Y\n3pDtrzTcv/zlL/nTP/1T/uIv/oKXL1/yV3/1V/z0pz/lV7/6FZ988gmXl5f8/u///mu/96q6YMf2\nJNe3FEO6L8k4t0UpXA5PHQdWsWPDXi9hlAS7146DdPY0+GiJXhh82rEYF0tEFzfEMgzN5324l4Bb\nfMnFzdNcJLBn3WLglcpyniDLN1D5PaL9tMvM9F3qPL/ljAObxc1rqBjLhffY4jlkwJetjyI6OSY1\n0AJOw2tJf1evejbNnnN3w1N5sWgQu8Piy+s5pFHtAxv2cTMPH8kM92zSR7rY8kX8kOfxA17Gp3Sh\nZfKOaXJMo24WF6OvTTsl1OgMscbiWXMoBR1QbyT9iyTmdGBDQ0WPJje/+fFtuP4+sp3Z/a7ZzqkS\nfah9O7Yjog+HzPYKpJpliEUizYPYzr1Xrf53XJeJaCfLsagF27Q8jx/wAu0oOYYVo6+YporxW7Hd\n0xqdd9i+Idtfabh//vOfl/BxeeTizs9+9rMv/d48tHLFE57zQXlSHVlxiGvy4IiRwFr2Kfc294Y+\n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\n9957j7/8y7/s/u6yz9n777/PnTt3+Iu/+ItX5jNB3yQDr8a1exXOCVxx/TTr28j2CzfcrwJAw/Xz\nn/+cN9/sk0e//e1vOTg4APpGi5e57ty5ww9+8AN+9rOfcffuXe7cudOdo8s6Z3fu3OHOnTt7XYOv\nynU82yRzmdfuVTkncMX103yubyPbL9xwXzZAX7dOT0/P3WhxEevu3bvdOXnzzTe5e/cuv/nNb5jP\n593fvexzduvWLX79618Drr75rbfeunQjCc/XJHMR61Vm+4rrx69vK9svXB3wsgE6z7rMfOxQvOiT\nTz7hpz/9Kf/4j/+4Vzd8GedssVhw+/ZtfvnLX3Y/X/Z1fJ4mmYtYrzrbV1w/fn0b2b4QWddXuVDl\naRotLnJ98skn/PEf/3Gnh3HZ52w2m/Huu+/yox/9iLfffvvSP9PzNslc1Lrs6/Sk9SqcG3j1uIZv\nJ9svPFTyqgD0pPXTn/6Uu3fvAnxto8VFrjt37vDXf/3XwOWfs08++aSL87399tu8//77l/6Z7t69\nywcffMDt27f3mmQu89pd9jn5qnXZ5yasV4lr+Pay/cIN96sCUFjvv/8+H3/8MX/3d38H0HkCd+7c\nYT6f8/3vf/+lf6bbt293GtB37ty59HN2586dDuTT01P+8A//8NI/009+8hN+8pOfIIRgsVgghLj0\na3fZ52S4rrg+3/q2sn0hDTjvvfdel6D4KkH6/xbXhx9+yJ//+Z9zeHjI8fEx77//Pn/6p396qeds\nsVjw29/+FnDeQPCYrq7jo+vqnDx+vYpcw7eX7avOyat1ta7W1fqGrf8mOiev1tW6Wlfr27SuDPfV\nulpX62p9w9aV4b5aV+tqXa1v2Loy3Ffral2tq/UNW1eG+2pdrat1tb5h68pwX62rdbWu1jds/f+d\nPcmEA61CVgAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 70 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulation\n", "\n", "A full simulation. The MKS has to artificially maintain the solution between 0 and 1. This hasn't been fixed yet." ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "np.random.seed(11)\n", "X0 = np.random.random((1, 256, 256))\n", "dt = 1e-8\n", "model = FastMKSRegressionModel(Nbin=7, threads=8)\n", "model.fit(X, y)\n", "model.resize_coeff(X0.shape[1:])\n", "data = []\n", "X1 = X0.copy()\n", "steps = 3000\n", "for step in range(steps + 1):\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 % (steps / 200) == 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": [ "15 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "30 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "45 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "60 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "75 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "90 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "105 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "120 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "135 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "150 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "165 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "180 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "195 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "210 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "225 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "240 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "255 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "270 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "285 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "300 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "315 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "330 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "345 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "360 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "375 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "390 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "405 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "420 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "435 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "450 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "465 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "480 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "495 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "510 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "525 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "540 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "555 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "570 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "585 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "600 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "615 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "630 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "645 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "660 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "675 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "690 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "705 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "720 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "735 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "750 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "765 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "780 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "795 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "810 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "825 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "840 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "855 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "870 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "885 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "900 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "915 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "930 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "945 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "960 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "975 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "990 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1005 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1020 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1035 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1050 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1065 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1080 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1095 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1110 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1125 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1140 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1155 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1170 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1185 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1200 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1215 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1230 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1245 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1260 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1275 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1290 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1305 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1320 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1335 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1350 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1365 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1380 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1395 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1410 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1425 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1440 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1455 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1470 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1485 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1500 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1515 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1530 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1545 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1560 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1575 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1590 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1605 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1620 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1635 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1650 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1665 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1680 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1695 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1710 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1725 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1740 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1755 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1770 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1785 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1800 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1815 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1830 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1845 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1860 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1875 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1890 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1905 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1920 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1935 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1950 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1965 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1980 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1995 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2010 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2025 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2040 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2055 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2070 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2085 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2100 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2115 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2130 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2145 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2160 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2175 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2190 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2205 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2220 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2235 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2250 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2265 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2280 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2295 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2310 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2325 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2340 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2355 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2370 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2385 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2400 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2415 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2430 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2445 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2460 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2475 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2490 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2505 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2520 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2535 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2550 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2565 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2580 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2595 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2610 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2625 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2640 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2655 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2670 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2685 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2700 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2715 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2730 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2745 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2760 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2775 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2790 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2805 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2820 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2835 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2850 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2865 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2880 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2895 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2910 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2925 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2940 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2955 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2970 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2985 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3000\n" ] } ], "prompt_number": 71 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Rudimentary Animation of the Data" ] }, { "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].copy(), vmin=0.0, vmax=1.0)\n", "plt.colorbar()\n", "for d in data:\n", " a.set_array(d.copy())\n", " plt.show()\n", " time.sleep(1)\n", " clear_output()\n", " display(fig)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Java Script Animation of the Data" ] }, { "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": [], "prompt_number": 72 } ], "metadata": {} } ] }