{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "code_folding": [], "collapsed": false }, "outputs": [ { "data": { "application/javascript": [ "require(['base/js/utils'],\n", "function(utils) {\n", " utils.load_extensions('usability/python-markdown/main');\n", " utils.load_extensions('usability/codefolding/main');\n", "});" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%javascript\n", "require(['base/js/utils'],\n", "function(utils) {\n", " utils.load_extensions('usability/python-markdown/main');\n", " utils.load_extensions('usability/codefolding/main');\n", "});" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Test Importing Custom Python Libraries\n", "This section tests the ability to use custom Python libraries." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEPCAYAAABRHfM8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuUnHWd5/H3l76kcyGdQEIS7ujAzCQBFQd01qXTc4ED\nEiYyOwrd6oyMzKqsqKvjRi6aQgeQmZF10NPuxeAeR4myrnCEYtQ4Y9Ouq4LKAElkRJBL0FwEOkk3\n6fTtu3/8noenulLdqe6uquep6s/rnD7pep7q4luHpL79/X1/F3N3REREjuSotAMQEZH6oIQhIiJl\nUcIQEZGyKGGIiEhZlDBERKQsShgiIlKWVBOGmd1uZrvN7NGCazkz22lmD0VfFxXcu8bMHjezx8zs\ngnSiFhGZmyzNdRhmdh4wAHzR3c+Mrm0CDrj7rUXPXQ3cAZwDnAB8BzjD3cdrG7WIyNyUaoXh7t8D\nXixxy0pc2wBscfcRd38K+AVwbhXDExGRAlntYVxtZg+b2WYzWxJdOx7YWfCcnYRKQ0REaiCLCeNz\nwGnAq4FfA5+a4rna10REpEaa0w6gmLvvib83s88D90QPnwNOKnjqidG1CcxMSUREZAbcvVQ74GWZ\nqzDMbFXBw0uBeAbVN4DLzazVzE4DTgceKPUa7t6wX5s2bUo9Br03vT+9v8b7KkeqFYaZbQHWAcvM\n7FlgE9BpZq8mDDf9EngXgLvvMLM7gR3AKHCVl/suRURk1lJNGO7eVeLy7VM8/ybgpupFJCIik8nc\nkJRMrbOzM+0QqqaR3xvo/dW7Rn9/5Uh14V41mJlGqkREpsnM8HpreouISDYpYYiISFmUMEREpCxK\nGCIiUhYlDBERKYsShoiIlEUJQ0REypK5zQdFROayfL6P2277NocONTNv3ijve98FXHxxR9phAUoY\nIiKZ0d29ka9+9TeMj29++doTT1wHkImkoSEpEZEMyOV62LLl5xOSBcATT9zIZz6zNaWoJlLCEBHJ\ngBtvvBd4Vcl7Q0NNtQ1mEkoYIiIpy+V6GB1dQDi54XBtbWO1DWgSShgiIikL1cVLwAXAdUV3r+Dq\nq8+vfVAlqOktIpKipLp4HrgD6AY+CjQBD9PSsicTDW9QwhARSdXNN98HjANvBu4BeoA2YAgY5Npr\n35pidBNpSEpEJCW5XA/Dw/OBg8AjwCUFdw/Q1NRPLndVOsGVoApDRCQloXfRRFJd9JNUFyNcf/07\n0guuBJ24JyKSgu7ujWzZ8gTgwHLgLKCPkDD20t4+QH///TWLRyfuiYhkUD7fx5YtjxJmRr0f2EOS\nLIaAYb785U+kGGFpqjBERGps1aq3sGuXERLFbxNmRm2lcGbU8PD3axpTORWGehgiIjWUz/exa9co\nMEI9zIwqpApDRKSGli7dQH//ONBKFnoXMfUwREQyJJfrob+/CRgElnB47+JQJnsXMVUYIiI10tLy\nRkZHWwjdgCZgMSF5tAIvsGLFMLt2fSuV2FRhiIhkRLIFyAihuhgFBoB5wCFgiM2bi/eRyhZVGCIi\nNRCqC4D1QC8Tq4vn6epawx133JJafJmvMMzsdjPbbWaPFlw7xsy2mtnPzezbZrak4N41Zva4mT1m\nZhekE7WIyPR0d2+Mqot4C5BOkuriNzQ17Uk1WZQr7SGpLwAXFl37CLDV3c8A/jl6jJmtBi4DVkc/\n02NmaccvIjKliYv03gw8zcRGd/a2AJlM6kNSZnYqcI+7nxk9fgxY5+67zWwl0Ovuv2Nm1wDj7n5L\n9LxvAjl3/2HR62lISkQy4/BFehOn0TY17WV09IE0QwTqYEhqEivcfXf0/W5gRfT98cDOguftBE6o\nZWAiItORy/VEi/Tqv7qAbCaMl0WlwlTlgkoJEcmkfL6Pj3/8HsKsqFZKbV/e3n4oU9uXH0kWtwbZ\nbWYr3X2Xma0i1HEAzwEnFTzvxOjaYXK53Mvfd3Z20tnZWZ1IRUQmceWVn8V9EeEkvePI2iK93t5e\nent7p/UzWexh/C3wvLvfYmYfAZa4+0eipvcdwLmEoajvAL9V3LBQD0NE0pbP97F+/aeBMbK4SK+U\nzG8+aGZbgHXAMjN7FvgY8EngTjN7J/AU8BYAd99hZncCOwgrXq5SZhCRLHrb2z5FOHZ1DFgGvEiY\nRhtXF0Ns3vzR9AKcodQrjEpThSEiaQoHIz1OOD1vCeH38mwt0iulnApDCUNEpELCUNTNhMQQD0WN\nAcPAAkKjezCV3WiPpF6n1YqI1KUrr/wssIiJ+0W1AMcCBoxkejfaI1HCEBGpgGTNxSBhv6gDwDGE\nROHAAF1dZ3PxxR0pRjk7GpISEZmlfL6PSy65GfdmQnM7uyu6J5P5WVIiIo1g4pqLpYQV3f3U64ru\nyShhiIjMQjIUNUZIFk2EBvcgYSiq/lZ0T0Y9DBGRGZq4/UdjNroLqYchIjJDS5duoL8/rK2opzUX\npWharYhIleRyPfT3NxHWWCwlJIsxwibb48Be2tsP1EWyKJcqDBGRGWhquojx8ThJrCJs/9FK0uh+\nnnvv/WjdTKNVhSEiUgVr117K+PhCwtBTG4245qIUVRgiItMQ9op6hJAc5lNP239MRRWGiEgFhfO5\nHwHagYOEZFE8K2q4YWZFFVOFISJSpkWLLmZwcAGhR3ERcA/h9+5mYB6wn66uV9Vlo1u71YqIVMja\ntZeyfbsRksWZwAvAayjc/mPNmla2bbsrxShnTluDiIhUQHf3RrZvHyLMgjoI7CM0uf8JWAjswWwX\n27b9NMUoq08JQ0RkCknfYhFhVlS8V1Q7oW8xBIzysY9dmV6QNaIhKRGRKcyffyFDQ+2EqbPrgV6K\nZ0V1dKzg/vu/kF6QFaAehojILCR9ixFCgjiZ4r7FggUvMDj4gxSjrAz1MEREZmjduiuivkUzoXcx\nnzAUtYvQt3geOMCdd9bfjKiZ0joMEZEiuVwPfX27SPoWhbvQHkXYK2qETZsub7jV3FPRkJSISJGw\nT9RiQt/iTOAJQtJIdqHt6Fhe932LQuphiIhM0ymnnM8zz7QDh0j6FscAOwhDUftpbd3LoUMPphhl\n5amHISIyDWvXXsozzzQDLxF6FsV9i0FggK9//VPpBZki9TBERChcnFdqn6i527copCEpEZnzkh1o\nF9GI+0SVQz0MEZEjCMniYeBowpBT4+0TVQ71MEREppDL9USVRZwsxgjJYuI+Ua2te9m2rbGa3DOh\nhCEic1I+38cNN9xDGIYaJvQtlnN4k3v/nG1yF8tswjCzp4D9hJQ/4u7nmtkxwFeBU4CngLe4e39q\nQYpIXcrn+7jkkhsIlcRgdHUpYd3FxCZ3V9cb5myTu1iWZ0k50Onur3H3c6NrHwG2uvsZwD9Hj0VE\nypbP97Fhw0dxbyepLJzw+/MCwsdiGzBAR8eqhm1yz0Rmm95m9kvg99z9+YJrjwHr3H23ma0Eet39\nd4p+Tk1vEZlUa+sFjIzMix6NEZLDQcJCvfmEpDFAR8fKhlrJfST1fqa3A98xsx+b2V9F11a4++7o\n+93AinRCE5F6dNxx5zEysoikP9FGUlksJN47aq4li3JltocBvMHdf21my4GtUXXxMnd3MytZSuRy\nuZe/7+zspLOzs5pxikgdOO6489i7dxFhq/IR4BzCHlETz7ZYs2benEgWvb299Pb2TutnMjskVcjM\nNgEDwF8R+hq7zGwV8F0NSYnIVELP4gOMja0gTJ/9DeF35VMo3iPq5JNHePrprekFm6K6HZIyswVm\ndnT0/ULgAuBR4BvAX0RP+wvg7nQiFJF6EDe4Q7JoJ/zeeQ6wGHiG8LHSBuyb08miXJmsMMzsNCBe\nUtkMfNndb46m1d5J2D7yKUpMq1WFISKQTJ11X0BoZh8ElhE+UiZWFsuXH2DPnu+lF2wGaGsQEZmT\ncrkebrhhC2EhXithSVe85ccoYc7MIuAAy5cPzPlkAUoYIjIHhWRxN2HDwJgqiyPRXlIiMqesW3cF\nfX07CT2KFmAP4WOumVBZPEqoLPapspgBVRgi0hDCSXnxmorh6OpqwtTZA4TzLRYCA5x88qga3EXq\ndpaUiMh0HHfceVGyiDcSHCSs3H4BeCWhj7EYGFSymAUlDBGpW/l8H0cd9apoQV5hsmhGU2crTz0M\nEalLoV+xAziesMZif3QnThYahqo09TBEpO4k/QojVBYHCdWFEZLFPgqTxZo1bQ19Wl4lqIchIg0l\nn++jufnsgn7FIsLq7dWEbT/GgecIySLsDdXVdZaSRYWowhCRurB27aVs3/4rwlqKuF8xQti0Ol5j\n8SChqmihpWWAu+66XocflUkL90Sk7oUtPq7G/XiSIae4XzEA/DbFq7cXL36Bfft+lEq89UoJQ0Tq\n2uFVhXF4v2I3YfgpDE+puT0z6mGISF3K5XowO5Pt24eAYwn9iWFK9ysWRl+hX6FkUT2qMEQkU8IM\nqPhAo7iqGIjuxkNQ6ldUmoakRKRuhHUVDwInEZrY8wmrtePG9q/REFT1aEhKRDKvu3sjZmvp63uS\nkCziM7cHCMligJBAVgE7KRyC2rTpEiWLGlKFISKp6O7eyJYt9xGGlxaQVBUDhHUUy1BVUTuqMEQk\nc+KKYsuWHwInEhLC0SRVxUHCth6qKrJGFYaIVF0+38c733kju3c/R0gOSwgJoY1QTexnYlVh0bV2\ntL1HbajCEJFU5XI9NDefw/r117J7935Cj2IpSZ9iMPpaQUgQcVWxj5AswvYemzZdomSRAaowRKSi\nkmoiXnA3L/oaIww/jZP0KYaBIeAMwmrtbYQqI/QqurrO4o47bqn9m5iDNK1WRGomTIt9mFAVjJEM\nO7USjksdJ/QnxqKvIWA5obLoJyzQC4mio2Ml99//hZq/h7lMCUNEqiokiW2ERHAsE6uJhYQqYjB6\n9hhwJtAHnECSKBYQ+hotLF06zj/+4we1AC8FShgiUlG5XA833fQlRkaGCMNJx0Z/lqom4mGn+AS8\nA8BawjDVVpLZUUoUWaCEISKzksv18Dd/8wXGxiAMIR1DSBCtJGsnxghDSUcxsZo4CHj0tZyQMPYS\nGtwaesoaJQwRKdvE5DBGWGW9iJAcCquIMULlMJ+QJCarJtpJpscOo2Z2tpWTMHSmt8gcks/38da3\nfpR9+14ifPBD+KAfInyYLyB8uDcTKgGL7hf2JMYJiWJ/wb0VwJPR6x0T/dweQj9jKbCA5uaDXHfd\nH5DLXVXttylVcsQKw8yWAL8PnEqoLZ8CfuDu+6od3EyowpC5JpnGuje6En+Ix3/G14YJC+Xaou9h\nYvVgRT9zNOGffHEVEb/2MkKSGCb0JuJpsRBXE2aDXH75maom6sCshqTM7Dzgw4RE8RDwK8LfqFXA\nawiJ42/d/f9WLuTZU8KQ6UqmgxZ/0BZ/4B7pWiWfX+5rQTKNFZIEEP9ZeK1UUoi/L04OkEyBjZ8T\n9yQORa9ZuHYirjLUm6hXs00YtwKfc/fHJ7l/BvBud//grCOdBjO7EPg04W/x5939lqL7ShgSbWz3\nXcIH2lQfvsOED8viD9pSH7hTXavk86fzWoXTWEu9v8JrCwkJozApxN8XJwcIPYpfFfz3CnsSB0mq\njEXAIF1dqiTqWcM1vc2sCfg34I8JR209CHS5+88KnqOEMUdMHIop/KCM1wSU88G8gIm/dddTddHE\nxGmskCSAUkkhPlui1GsVJwcIayXGCZv/efS84p7ExepJNIiKNL3N7EvAe929P3p8KnC7u/9hJYKc\npnOBX7j7U1EsXwE2AD+b6oek/h2eHOLKIB5OiU9oGyY5gKecD+b50b3iD9pSH7hTXavk86fzWoPR\ney53+GqAkCCLk+gCkp1h4+TwJGGtxAq0VkKgvFlS3wN+ZGYfJPzK8dfAh6oa1eROAJ4teLwTeF1K\nsUiVJauISyWHpSRDMcUfksWzeab6YN4f3avXCqNwGitMPYTVDqwknC0xGr3Goeh1lBzkyI6YMNz9\nv5vZDuBfgN8AZ7v7r6se2SThlPOkXC738vednZ10dnZWKRyppIl9h3gVcTOlk8N8kqGY4kRQPJtn\nqg/mFcBj1G8PA5JprHtJEkD8Z2FS2EPYBXYpsFxDSnNcb28vvb290/qZcqbVvh34WPR1FnAhcIW7\n/+vMwpw5M3s9kHP3C6PH1wDjhY1v9TDqS5IkXmJi36FwFXGp5HAweoVSv5nHG9uV88Ecz/Sp11lS\nTdFjTWOV2alI09vM7gb+o7vviR6fC/wPd391xSItk5k1E5ref0To0D2Amt51J1lRXLjVxFSriEsl\nhyGSoZjiRFC4sd2RZklppo8IVHGWlJnNc/dDM45sFszsIpJptZvd/eai+0oYGRV6Ej8m2W6isIqY\nahXxZMmhcH+i4kSgje1EpmO26zByhHUYuye5v4qwDmPTbAOtJCWMbEmqiYMkR3PG01jj4zmPtIp4\nquSg6kCkEmY7rfZB4Ctm1gr8lOSg3ZXA2YRO2t9XKFZpMKE3cR/J/kTLCH99ClcUF1YRYyRTRFsJ\nf81eQVhFfIjQ41gGvBIlB5F0TFVh/KO7v93MrgceJ9lL6mng++6+s2ZRToMqjHRNTBSF1US83qFw\nRXF8POdkfQdVDyK1MtsK47VmdjzwFqCT8C8/pk9kmSBJFMcAJ1K6moCJK4qXR/cPonUAItk3VYXx\nPuA9hHGBXxXddnd/RZVjmxFVGLU1MVHETew2QsIorCaWEdY7FG83sZC4Ob1yZTOf//x7lSREUlCp\nabX/zd3fXdHIqkgJozby+T42bPgAY2NHMzFRNFG6mihc76AZTCJZ03CbD5ZDCaP61q69lO3bf0Wo\nKooTRdyb2M/h1YROXBPJKiUMqagw/JQnbO5nJGsnChPFEKE3sZ+wk0xSTSxceIivfnWjqgmRDFLC\nkIo57rjz2Lv3KMLw0yJCwojXThQniv7oeRp2EqkX5SSMo2oVjNSn7u6NmK1l795FJNXCMCFZjBES\nxNGEzQGfie6tAI5h6dIm7r33A7zwwt1KFiINQBWGlJTP9/Gnf/ohhocXkFQVhQ3tAeA4VFGINAYN\nScmMhF7F9wkJoJkw2ykeflpGWPS/mHCuQrzeooW2tpf42teuVaIQqUMVOXFP5pZTTjmfZ54xwpkJ\nhbOf4q07VhJOZvs3wkruBcAAmzZdpHMVRBqcEoa8rL39dezfHy/AayGZ/bSCsPGfE9ZRHEuYMjtA\nR8fR3H//11KKWERqSU1vIZfrwezMKFksJjSuB0ma2s2EYacRQvKYT0vLPu699xruv/8LaYUtIjWm\nHsYcF86oeJKkaX2Q5JzoxSRN7WOJF911dKxUohBpMOphyJRCvyJODHFjez5h+Glx9GdcVbTQ1nZA\nTW2ROUxDUnNQPt9Hc/PZUbJYRFixPUBIDEbY8uPXJLOiRunoaOfgwW8qWYjMYUoYc0wu18P69dcx\nNraCUEUMRl8rSHoVLxKSRhtNTS+qVyEigIak5pRcrocbbribMB12PuEUu4OE2U8rCbvJ7iY+DnX5\n8n727PleWuGKSMao6T1HhMV4DxEvsgvN7DhpED1uJx6eWrOmjW3b7kolVhGpPe0lJUCYCbVly8Mk\n+0DFQ1BGSBqHCFVHSBZdXWcpWYjIYTQk1eDCtNldhGQxRDJlNu5XPEVofLfQ0rKPu+66Xo1tESlJ\nQ1INLEkWiwiVxQGS9RUHCLOgQlVx8smjPP301tRiFZF0aR3GHJYkizg5gJKFiMyGehgNaGJlUTgT\nagnFyWLNmjYlCxEpixJGg+nu3liQLAaBVsKusxCOTG0mThYdHSvV3BaRsilhNJAwdfYRkgV5BwnV\nRDwTaj7xduRdXWdpMZ6ITIua3g0iJIt46uwQYauPuLI4ilBZzAP209X1Ku6445Z0AhWRTKrLdRhm\nljOznWb2UPR1UcG9a8zscTN7zMwuSDPOLMnleqLK4mgOH4Y6FP3ZChygo2OVkoWIzEgWZ0k5cKu7\n31p40cxWA5cBqwmn93zHzM5w9/EUYsyMsN3HN0gW5R0k9C/mE7YlnzgMpWQhIjOVuQojUqos2gBs\ncfcRd38K+AVwbk2jyph8vi/aGyquLEYIR6seIFQWRxMa3AeULERk1rKaMK42s4fNbLOZLYmuHQ/s\nLHjOTkKlMWf92Z/dxMTKwglF4wLC/9o2wmwoDUOJyOylMiRlZlsJ26MWuw74HPDx6PEngE8B75zk\npUp2t3O53Mvfd3Z20tnZOcNIs+uUU85naChOFmOEyuIgYepsPAy1X6fjiUhJvb299Pb2TutnMj1L\nysxOBe5x9zPN7CMA7v7J6N43gU3u/qOin2n4WVJr117K9u1DhHw/SFiQ10xIHMOEZHGAjo4VShYi\nUpZ6nSW1quDhpcCj0fffAC43s1YzOw04HXig1vGlbd26K6Jk0U6ykeBRFCeLNWvmKVmISEVlcZbU\nLWb2asJw0y+BdwG4+w4zuxPYQTjp56qGLyWKHL6K+xzgCSZu97Gfk08eZdu2+9ILVEQaUqaHpGai\nUYek8vk+1q+/mWTzwDOBFwhHqe4gSRYj2htKRKatnCEpJYw6sWjRxQwOLiCs4h4GTqY4WbS27uXQ\noQdTjFJE6pW2N28Q69ZdweDgPMIw1Pzo62lgFyFZDAIDfP3rn0ovSBFpeJlrestESd9ihGQzwVHC\nudxHAePACJs2Xa6T8kSkqpQwMizZIyrefbZwFffEzQRzuavSC1RE5gT1MDIqn+/jkktuxn0RoW+x\nmjAjyimePqszLURkttT0rmNLl26gv7+VpG+xnLD2ImlyL1jwIoODP0gxShFpFHW5cE9Ck7u/v4lk\nj6gmYA+h0X1s9Kxh7rxT+0OJSO1ollTG5HI9UZM73uoj7lvEq7nHCX2L16rJLSI1pSGpjGlquojx\n8cXAXrRHlIjUinoYdWbduivo64tnQbUShqImJov29kH6++9PMUoRaURauFdHkqEoIzS54/UWrSTn\ndI/y5S9/Ir0gRWROU9M7A/L5Pj7+8XsImwoWLs47FD1+Cehn06Y3qW8hIqnRkFQGrFr1FnbtcsIU\n2vXAPYRcPnFxnk7NE5Fq0bTaOpDL9bBr1yjJyXkPAZcQhqGWAoMsWLBPyUJEUqceRoqSoah4JtSJ\nTNxU8Hlgv9ZbiEgmaEgqRclq7udJptDG+0aF611da1RdiEjVaVpthnV3b2TLlscJlUUzmkIrImlS\nDyOj8vk+tmx5lLBl+Qihuoi3LD+WMLV2RFNoRSRTVGGkIMyKMiau5tZQlIikR0NSGRTO5v40obLQ\nam4RyQat9M6gyy67hTASGCcLreYWkfqgHkYNdXdvLDibO+5baDW3iNQHDUnVSBiK+iShqoiri8K+\nxQusWDHMrl3fSjFKEZmrNEsqQ972tk8Rhp0Kq4sBwtYfocrYvPm69AIUETkCJYwa6O7eGJ2g9xJw\nDrAPOIYwfdaBATo6TtJQlIhkmoakquzwoSidzS0i2aMhqQy48srPMnEoSmdzi0h9UsKoony+L9qJ\n9iWSs7kLh6IGWbGiSUNRIlIXUkkYZvZmM9tuZmNmdnbRvWvM7HEze8zMLii4/lozezS69w+1j3r6\nQnVRuECvuNF9SI1uEakbaVUYjwKXAn2FF81sNXAZsBq4EOgxs3hM7XPAO939dOB0M7uwhvFOW1Jd\naM2FiDSGVBKGuz/m7j8vcWsDsMXdR9z9KeAXwOvMbBVwtLs/ED3vi8CbahPtzIRptCNMHIpaTEge\nB1mxwsnlrkoxQhGR6claD+N4YGfB453ACSWuPxddz6RcrieaRqs1FyLSOKq2l5SZbQVWlrh1rbvf\nU63/bhbceOO9hK3KC6uLQdToFpF6VrWE4e7nz+DHngNOKnh8IqGyeC76vvD6c5O9SC6Xe/n7zs5O\nOjs7ZxDKzHR3b2R0dAGhT7EMeJFQXbQRNhccYvPmj9YsHhGRUnp7e+nt7Z3Wz6S6cM/Mvgv8tbv/\nJHq8GrgDOJcw5PQd4Lfc3c3sR8D7gAeAPHCbu3+zxGumtnAvWaQHsB7oRedciEg9yOx5GGZ2KXAb\n4VfwfcBD7n5RdO9a4C8JA//vd/dvRddfC/wvYD5wn7u/b5LXTi1hJAcj7QF+GziLMBGsDdhLU9Ne\nRkcfmOolRERSkdnzMNz9LuCuSe7dBNxU4vpPgDOrHNqMJdNoR4A3A/cA/SRDUSNcf/070gtQRGSW\ntJdUhSxduoH+/nGS/aImVhft7QM6RU9EMkt7SdXI4dNo95AkiyHgkE7RE5G6pwqjAlpa3sjoaAth\nhE8HI4lI/VGFUQO5XE80jXaE0ov0hrRIT0QagiqMWZo3bz3Dw+NoGq2I1DNVGFWWz/cxPNxG2FDw\nEaCTpLr4DU1Ne5QsRKRhpDKttlEkGwxqGq2IND5VGDOUzIyKq4tLCu4eoKmpX7vRikhDUcKYobDB\n4BihuniaidNoVV2ISONRwpiBiTOjnmNidTFIS8ugqgsRaTjqYczArbd+h1BJxDOjjgJ+h1Bx7Ofa\na9+aXnAiIlWiabUz0Nx8GWNj2mBQRBqHptVWidlLqHchInONKowZeOUr/wNPPqkNBkWkcajCqJLb\nbns/S5ZM3GBwyZJ52mBQRBqaKowZyuf7+MxntjI01ERb2xhXX32+zukWkbqV2RP3qinNE/dEROqV\nhqRERKRilDBERKQsShgiIlIWJQwRESmLEoaIiJRFCUNERMqihCEiImVRwhARkbIoYYiISFmUMERE\npCxKGCIiUpZUEoaZvdnMtpvZmJmdXXD9VDM7aGYPRV89Bfdea2aPmtnjZvYPacQtIjKXpVVhPApc\nStgfvNgv3P010VfhwdifA97p7qcDp5vZhbUINGt6e3vTDqFqGvm9gd5fvWv091eOVBKGuz/m7j8v\n9/lmtgo42t3js0+/CLypKsFlXCP/pW3k9wZ6f/Wu0d9fObLYwzgtGo7qNbN/H107AdhZ8Jznomsi\nIlIjzdV6YTPbCqwscetad79nkh/7FXCSu78Y9TbuNrM11YpRRETKl+oBSmb2XeBD7v7Tqe4Dvwb+\nxd1/N7reBaxz93eX+BmdniQiMgNHOkCpahXGNLwcoJktA1509zEzewVwOvCku/eb2X4zex3wAPB2\n4LZSL3aMga89AAAEUElEQVSkNywiIjOT1rTaS83sWeD1QN7M/im6tQ542MweAv438C5374/uXQV8\nHnicMJPqm7WOW0RkLmu4M71FRKQ6sjhLatbM7Goz+5mZbTOzW9KOpxrM7ENmNm5mx6QdSyWZ2d9F\n/+8eNrOvm1l72jFVgpldaGaPRQtPN6YdTyWZ2Ulm9t1oMe42M3tf2jFVmpk1RbM3J5uwU7fMbImZ\nfS36d7fDzF4/2XMbLmGY2R8AfwKc5e5rgb9POaSKM7OTgPOBp9OOpQq+Daxx91cBPweuSTmeWTOz\nJuCzwIXAaqDLzH433agqagT4z+6+hjDM/J8a7P0BvB/YATTikMw/APdFk4rOAn422RMbLmEA7wFu\ndvcRAHffm3I81XAr8F/SDqIa3H2ru49HD38EnJhmPBVyLqHv9lT09/IrwIaUY6oYd9/l7v8afT9A\n+MA5Pt2oKsfMTgTeSOihNtSkmqiCP8/dbwdw91F33zfZ8xsxYZwOdJjZD6PFf7+XdkCVZGYbgJ3u\n/kjasdTAXwL3pR1EBZwAPFvweCcNuvDUzE4FXkNI9o3ivwIfBsaP9MQ6dBqw18y+YGY/NbP/aWYL\nJntyFqbVTtsUiwKvI7ynpe7+ejM7B7gTeEUt45utI7y/a4ALCp9ek6AqqJxFnWZ2HTDs7nfUNLjq\naMRhjMOY2SLga8D7o0qj7pnZemCPuz9kZp1px1MFzcDZwHvd/UEz+zTwEeBjkz257rj7+ZPdM7P3\nAF+Pnvdg1Bg+1t2fr1mAszTZ+zOztYTfCB42MwjDNT8xs3PdfU8NQ5yVqf7/AZjZOwhDAH9Uk4Cq\n7zngpILHJzFxq5u6Z2YtwP8BvuTud6cdTwX9O+BPzOyNQBuw2My+6O5/nnJclbKTMGLxYPT4a4SE\nUVIjDkndDfwhgJmdAbTWU7KYirtvc/cV7n6au59G+J99dj0liyOJdiH+MLDB3YfSjqdCfkzYYflU\nM2sFLgO+kXJMFWPht5fNwA53/3Ta8VSSu1/r7idF/94uJ+w40SjJAnffBTwbfVYC/DGwfbLn12WF\ncQS3A7eb2aPAMNAw/3NLaMShjs8ArcDWqIr6QdE293XH3UfN7L3At4AmYLO7TzoTpQ69AXgb8Ei0\n6BbgmgZdXNuI/+auBr4c/TLzBHDFZE/Uwj0RESlLIw5JiYhIFShhiIhIWZQwRESkLEoYIiJSFiUM\nEREpixKGiIiURQlDRETKooQhIiJlUcIQqTIzOyc6EGqemS2MDhlanXZcItOlld4iNWBmnyBsXjcf\neNbdG/IkSGlsShgiNRDt5vpj4CDw+65/eFKHNCQlUhvLgIXAIkKVIVJ3VGGI1ICZfQO4g3CY1yp3\nvzrlkESmrRG3NxfJFDP7c+CQu3/FzI4C/p+Zdbp7b8qhiUyLKgwRESmLehgiIlIWJQwRESmLEoaI\niJRFCUNERMqihCEiImVRwhARkbIoYYiISFmUMEREpCz/H+RqUHVuRAYGAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "from numpy import linspace\n", "import MTK_Basic_Plotting2\n", " \n", "def f(x):\n", " return x**3 + 3\n", " \n", "range_begin = -5\n", "range_end = 5 \n", "x = linspace(range_begin, range_end, 1000)\n", " \n", " \n", "MTK_Basic_Plotting2.MakeSimplePlot('', x, 'x', f(x), 'f(x)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This figure is a plot of the function\n", "$$f(x) = x^3 + 3$$ \n", "\n", "It is generated by the Python code above by calling the custom Python basic plotting library, MTK_Basic_Plotting2." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Appendix - Plotting Library Source Code\n", "This section tests the ability to present formatted Python code in an external source file." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "code_folding": [], "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
 1\n",
       " 2\n",
       " 3\n",
       " 4\n",
       " 5\n",
       " 6\n",
       " 7\n",
       " 8\n",
       " 9\n",
       "10\n",
       "11\n",
       "12\n",
       "13\n",
       "14\n",
       "15\n",
       "16\n",
       "17\n",
       "18\n",
       "19\n",
       "20\n",
       "21\n",
       "22\n",
       "23\n",
       "24\n",
       "25\n",
       "26\n",
       "27\n",
       "28
# MTK Basic Plotting Demo\n",
       "# Author: J. Simmons\n",
       "# Date: Feb. 2015\n",
       "# Copyright 2015 Mach 30\n",
       "#\n",
       "# Licensed under the Apache License, Version 2.0 (the "License");\n",
       "# you may not use this file except in compliance with the License.\n",
       "# You may obtain a copy of the License at\n",
       "#\n",
       "#    http://www.apache.org/licenses/LICENSE-2.0\n",
       "#\n",
       "# Unless required by applicable law or agreed to in writing, software\n",
       "# distributed under the License is distributed on an "AS IS" BASIS,\n",
       "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
       "# See the License for the specific language governing permissions and\n",
       "# limitations under the License.\n",
       "\n",
       "import numpy\n",
       "import pylab\n",
       "\n",
       "def MakeSimplePlot(title, x_arr, x_label, y_arr, y_label):\n",
       "    """Make a simple x,y plot and save it to a file"""\n",
       "  \n",
       "    pylab.clf()    \n",
       "    pylab.plot(x_arr, y_arr, 'bo')\n",
       "    pylab.xlabel(x_label)\n",
       "    pylab.ylabel(y_label)\n",
       "    pylab.title(title)\n",
       "
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Pygments calls to display source code - should be abstracted to an \"IPython magic\"\n", "# from http://stackoverflow.com/questions/19197931/how-to-show-as-output-cell-the-contents-of-a-py-file-with-syntax-highlighting\n", "from pygments import highlight\n", "from pygments.lexers import PythonLexer\n", "from pygments.formatters import HtmlFormatter\n", "import IPython\n", "\n", "with open('MTK_Basic_Plotting2.py') as f:\n", " code = f.read()\n", "\n", "formatter = HtmlFormatter(linenos='table')\n", "IPython.display.HTML('{}'.format(\n", " formatter.get_style_defs('.highlight'),\n", " highlight(code, PythonLexer(), formatter)))" ] }, { "cell_type": "markdown", "metadata": { "code_folding": [ 0 ] }, "source": [ "---\n", "This document is a work of Mach 30 and is licensed under the Creative Commons Attribution 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }