7. IPython Notebook
• IPython shell in the browser
• Markdown text + executable Python code
• JSON container, including output
• Literate Programming – finally
• Great tutorial experience
• Easy to share running code – w/o hassle
8. IPython Notebook
Demo
• Tour of the IPython notebook (built-in)
• Installing a custom extension
• Combined later with Matplotlib demo
9. IPython Extension Demo
• Show object graphs
• Reuse a previously written package
• Run interactively in the notebook
• Notebook:
http://nbviewer.ipython.org/4770302/
• Code:
https://gist.github.com/deeplook/4731035
14. What to take away
• Use available Python tools for your
scientific domain (trivia)!
• Use IPython shell & notebook, Matplotlib
– far too powerful to leave to scientists! ;-)
• Have fun with science
– seriously!
http://io9.com/5973726/15+year-old-whiz-kid-has-
research-on-dwarf-galaxies-published-in-nature
16. Exercise
Run the algorithm below using CPython, Cython, PyPy and Numba and
compare their performance. This is implementing a spigot algorithm
by A. Sale, D. Saada, S. Rabinowitz, as mentioned on
http://mail.python.org/pipermail/edu-sig/2012-December/010721.html.
Code: https://gist.github.com/deeplook/4947835.
def pi_digits(n):
"Generate n digits of Pi."
k, a, b, a1, b1 = 2, 4, 1, 12, 4
while n > 0:
p, q, k = k * k, 2 * k + 1, k + 1
a, b, a1, b1 = a1, b1, p * a + q * a1, p * b + q * b1
d, d1 = a / b, a1 / b1
while d == d1 and n > 0:
yield int(d)
n -= 1
a, a1 = 10 * (a % b), 10 * (a1 % b1)
d, d1 = a / b, a1 / b1
>>> list(pi_digits(20))
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8, 4]