Skip to content

Instantly share code, notes, and snippets.

@fccoelho
Last active August 29, 2015 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fccoelho/0459bbc078227c970565 to your computer and use it in GitHub Desktop.
Save fccoelho/0459bbc078227c970565 to your computer and use it in GitHub Desktop.
Benchmark of ODE solvers
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Benchmarking ODE solvers\n",
"In this notebook we will compare the VODE Solver available through the `PyDSTool` package, with the more widely known and used LSODA in `scipy.integrate`.\n",
"\n",
"We will start by installing PyDSTool and importing it."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[sudo] password for fccoelho: \n",
"\n"
]
}
],
"source": [
"!sudo pip install pydstool"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"import PyDSTool as dst\n",
"import numpy as np\n",
"from scipy.integrate import odeint\n",
"%pylab inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's start with an example from PyDSTool tutorial"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"DSargs = dst.args(name='Calcium_channel_model')\n",
"# parameters\n",
"DSargs.pars = { 'vl': -60,\n",
" 'vca': 120,\n",
" 'i': 0,\n",
" 'gl': 2,\n",
" 'gca': 4,\n",
" 'c': 20,\n",
" 'v1': -1.2,\n",
" 'v2': 18 }\n",
"# auxiliary helper function(s) -- function name: ([func signature], definition)\n",
"DSargs.fnspecs = {'minf': (['v'], '0.5 * (1 + tanh( (v-v1)/v2 ))') }\n",
"# rhs of the differential equation, including dummy variable w\n",
"DSargs.varspecs = {'v': '( i + gl * (vl - v) - gca * minf(v) * (v-vca) )/c',\n",
" 'w': 'v-w' }\n",
"# initial conditions\n",
"DSargs.ics = {'v': 0, 'w': 0 }"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Exception ignored in: <bound method Dopri_ODEsystem.__del__ of Generator Calcium_channel_model>\n",
"Traceback (most recent call last):\n",
" File \"/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/Generator/Dopri_ODEsystem.py\", line 991, in __del__\n",
" ODEsystem.__del__(self)\n",
" File \"/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/Generator/ODEsystem.py\", line 525, in __del__\n",
" ctsGen.__del__(self)\n",
" File \"/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/Generator/baseclasses.py\", line 1430, in __del__\n",
" Generator.__del__(self)\n",
" File \"/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/Generator/baseclasses.py\", line 1381, in __del__\n",
" delattr(eval(finfo[0]), fname)\n",
"SyntaxError: unexpected EOF while parsing (<string>, line 0)\n",
"Exception ignored in: <bound method Dopri_ODEsystem.__del__ of Generator Calcium_channel_model>\n",
"Traceback (most recent call last):\n",
" File \"/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/Generator/Dopri_ODEsystem.py\", line 991, in __del__\n",
" ODEsystem.__del__(self)\n",
" File \"/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/Generator/ODEsystem.py\", line 525, in __del__\n",
" ctsGen.__del__(self)\n",
" File \"/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/Generator/baseclasses.py\", line 1430, in __del__\n",
" Generator.__del__(self)\n",
" File \"/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/Generator/baseclasses.py\", line 1381, in __del__\n",
" delattr(eval(finfo[0]), fname)\n",
"SyntaxError: unexpected EOF while parsing (<string>, line 0)\n",
"Exception ignored in: <bound method Dopri_ODEsystem.__del__ of Generator Calcium_channel_model>\n",
"Traceback (most recent call last):\n",
" File \"/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/Generator/Dopri_ODEsystem.py\", line 991, in __del__\n",
" ODEsystem.__del__(self)\n",
" File \"/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/Generator/ODEsystem.py\", line 525, in __del__\n",
" ctsGen.__del__(self)\n",
" File \"/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/Generator/baseclasses.py\", line 1430, in __del__\n",
" Generator.__del__(self)\n",
" File \"/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/Generator/baseclasses.py\", line 1381, in __del__\n",
" delattr(eval(finfo[0]), fname)\n",
"SyntaxError: unexpected EOF while parsing (<string>, line 0)\n"
]
},
{
"data": {
"image/png": "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\n/x/y52ILyyNsLgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fe72834a048>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"DSargs.tdomain = [0,30] # set the range of integration.\n",
"ode = dst.Generator.Vode_ODEsystem(DSargs); # an instance of the 'Generator' class.\n",
"traj = ode.compute('polarization'); # integrate ODE\n",
"pts = traj.sample(dt=0.1) # Data for plotting\n",
"\n",
"# PyPlot commands\n",
"plt.plot(pts['t'], pts['v']);\n",
"plt.xlabel('time'); # Axes labels\n",
"plt.ylabel('voltage'); # ...\n",
"plt.ylim([0,65]); # Range of the y axis\n",
"plt.title(ode.name); "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now for the equivalent model using Scipy's odeint"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def calcium_channel(y, t, *parms):\n",
" v, w = y\n",
" vl, vca, i, gl, gca, c, v1, v2 = parms\n",
" minf = lambda v: 0.5 * (1 + tanh( (v-v1)/v2 ))\n",
" return[\n",
" ( i + gl * (vl - v) - gca * minf(v) * (v-vca) )/c, #dv/dt\n",
" v-w #dw/dt\n",
" ]"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"tdomain = np.arange(0, 30, 0.1)\n",
"inits = [0, 0]\n",
"parms = -60, 120, 0, 2, 4, 20, 1.2, 18\n",
"traj = odeint(calcium_channel, inits, tdomain, parms)"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0b73e7eb00>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(tdomain, traj);\n",
"plt.xlabel('time'); # Axes labels\n",
"plt.ylabel('voltage'); # ...\n",
"plt.ylim([0,65]); # Range of the y axis\n",
"plt.legend(['v', 'w'], loc=0)\n",
"plt.title(calcium_channel.__name__);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we know that they generate the same output (as they should) we can proceed to the first benchmark."
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10 loops, best of 3: 58.8 ms per loop\n"
]
}
],
"source": [
"%timeit ode.compute('polarization')"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"100 loops, best of 3: 2.2 ms per loop\n"
]
}
],
"source": [
"%timeit odeint(calcium_channel, inits, tdomain, parms)"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"27.045454545454543"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"59.5/2.2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this simple benchmark we can see that scipy's integrator is roughly 27 times faster. But that is just on a very simple, well behaved system of ODES.\n",
"\n",
"Let's try a system with a more complex dynamic."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"DS2args = dst.args(name='Lorenz_System')\n",
"# parameters\n",
"DS2args.pars = { 'sigma': 10,\n",
" 'b': 8/3,\n",
" 'r': 28,\n",
" }\n",
"\n",
"# rhs of the differential equations\n",
"DS2args.varspecs = {'x': 'sigma*(y-x)',\n",
" 'y': 'r*x - y - x*z',\n",
" 'z': 'x*y - b*z'\n",
" }\n",
"# initial conditions\n",
"DS2args.ics = {'x': 0, 'y': 2, 'z': 0 }"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\na3NuggAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fe71d0ea160>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"DS2args.tdomain = [0,100] # set the range of integration.\n",
"ode2 = dst.Generator.Vode_ODEsystem(DS2args) # an instance of the 'Generator' class.\n",
"traj = ode2.compute('polarization') # integrate ODE\n",
"pts = traj.sample(dt=0.01) # Data for plotting\n",
"\n",
"# PyPlot commands\n",
"plt.plot(pts['x'], pts['y']);\n",
"plt.xlabel('x'); # Axes labels\n",
"plt.ylabel('y'); # ...\n",
"#plt.ylim([0,65]); # Range of the y axis\n",
"plt.title(ode2.name); "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's implement the lorenz system for odeint"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def lorenz(Y,t,*parms):\n",
" x,y,z = Y\n",
" sigma, b, r = parms\n",
" return [\n",
" sigma*(y-x),\n",
" r*x - y - x*z,\n",
" x*y - b*z\n",
" ]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"tdomain2 = np.arange(0, 100, 0.1)\n",
"inits2 = [0, 2, 0]\n",
"parms2 = 10, 8/3, 28\n",
"traj2 = odeint(lorenz, inits2, tdomain2, parms2)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fe7282e59e8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(tdomain2, traj2);\n",
"plt.xlabel('time'); # Axes labels\n",
"plt.ylabel('state'); # ...\n",
"#plt.ylim([0,65]); # Range of the y axis\n",
"plt.legend(['x', 'y', 'z'], loc=0)\n",
"plt.title(lorenz.__name__);"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 loops, best of 3: 424 ms per loop\n"
]
}
],
"source": [
"%timeit ode2.compute('polarization')"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10 loops, best of 3: 131 ms per loop\n"
]
}
],
"source": [
"% timeit odeint(lorenz, inits2, tdomain2, parms2)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"3.236641221374046"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"424/131"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now the difference in performance is far smaller. \n",
"\n",
"But PyDSTool has another trick up its sleeve: it can compile the model equation to native code using C code-generation. Scipy's `odeint` relies on the repeated evaluation of a Python function to calculate the derivatives, thus adding considerable overhead. \n",
"\n",
"Now, if we use the C-based integrator `Dopri`, we can get a 100x performance boost. Notice that in the first time you compile the model, you pay a time price for the compilation, but then the generation of trajectories is much faster."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"running build_ext\n",
"running build_src\n",
"build_src\n",
"building py_modules sources\n",
"building extension \"/home/fccoelho/Documentos/dop853_temp._dop853_Lorenz_System_vf\" sources\n",
"swig: /home/fccoelho/Documentos/dop853_temp/dop853_Lorenz_System_vf.i\n",
"swig -python -I/usr/local/lib/python3.4/dist-packages/numpy/core/include -I/home/fccoelho/Documentos -I/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator -o /home/fccoelho/Documentos/dop853_temp/dop853_Lorenz_System_vf_wrap.c -outdir /home/fccoelho/Documentos/dop853_temp /home/fccoelho/Documentos/dop853_temp/dop853_Lorenz_System_vf.i\n",
"build_src: building npy-pkg config files\n",
"customize UnixCCompiler\n",
"customize UnixCCompiler using build_ext\n",
"building '/home/fccoelho/Documentos/dop853_temp._dop853_Lorenz_System_vf' extension\n",
"compiling C sources\n",
"C compiler: x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC\n",
"\n",
"compile options: '-I/usr/local/lib/python3.4/dist-packages/numpy/core/include -I/home/fccoelho/Documentos -I/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator -I/usr/local/lib/python3.4/dist-packages/numpy/core/include -I/usr/include/python3.4m -c'\n",
"extra options: '-w -Wno-return-type -Wall -D__DOPRI__'\n",
"x86_64-linux-gnu-gcc: /home/fccoelho/Documentos/dop853_temp/Lorenz_System_vf.c\n",
"x86_64-linux-gnu-gcc: /usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator/dop853.c\n",
"x86_64-linux-gnu-gcc: /usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator/dop853mod.c\n",
"x86_64-linux-gnu-gcc: /usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator/interface.c\n",
"x86_64-linux-gnu-gcc: /home/fccoelho/Documentos/dop853_temp/dop853_Lorenz_System_vf_wrap.c\n",
"x86_64-linux-gnu-gcc: /usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator/memory.c\n",
"x86_64-linux-gnu-gcc: /usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator/eventFinding.c\n",
"x86_64-linux-gnu-gcc: /usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator/integration.c\n",
"x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 /home/fccoelho/Documentos/dop853_temp/home/fccoelho/Documentos/dop853_temp/Lorenz_System_vf.o /home/fccoelho/Documentos/dop853_temp/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator/dop853mod.o /home/fccoelho/Documentos/dop853_temp/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator/dop853.o /home/fccoelho/Documentos/dop853_temp/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator/integration.o /home/fccoelho/Documentos/dop853_temp/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator/interface.o /home/fccoelho/Documentos/dop853_temp/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator/eventFinding.o /home/fccoelho/Documentos/dop853_temp/usr/local/lib/python3.4/dist-packages/PyDSTool-0.90.0-py3.4.egg/PyDSTool/integrator/memory.o /home/fccoelho/Documentos/dop853_temp/home/fccoelho/Documentos/dop853_temp/dop853_Lorenz_System_vf_wrap.o -o /home/fccoelho/Documentos/dop853_temp/_dop853_Lorenz_System_vf.cpython-34m.so -w\n"
]
}
],
"source": [
"ode2 = dst.Generator.Dopri_ODEsystem(DS2args) # an instance of the 'Generator' class."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"100 loops, best of 3: 3.33 ms per loop\n"
]
}
],
"source": [
"%timeit ode2.compute('Lorenz')"
]
},
{
"cell_type": "code",
"execution_count": 156,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"dst.Generator.Dopri_ODEsystem?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"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
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment