I had a nice discussion with Tom Ronadeau last weekend when he was in DC
for an SDR conference. I mentioned a project some of you may be aware
called the IPython
If you are familiar with IPython - the enhanced python shell, the
HTML Notebook is a locally-hosted web interface to an IPython kernel.
web interface looks and feels a lot like Mathematica. But whereas I
enjoyed Mathematica, I really like the IPython Notebook. It allows you
cellularize your code (Matlab has a similar feature) and so iteratively
modify and run code in a non-linear fashion that makes hacking (the
constructive kind) and debugging really refreshing. And you have all
introspective sugar and magic (functions) that come with IPython.
In the spirit of
I have attached a very simple IPython Notebook example that is basically
copy-n-paste of the BER AWGN simulation
This notebook doesn’t show off any of the fancier features of the
but it’s a dirt-simple GR example and hopefully illustrates the tool.
To install the latest stable release of the IPython Notebook on Ubuntu,
is your friend:
sudo pip install ipython
or for a slightly more out-of-date version if you are running at least
sudo apt-get install ipython-notebook
Open a terminal and start the notebook server by running:
ipython notebook --pylab inline
A new tab should open in your browser and you can import the example
notebook. Note that the notebook server currently isn’t very filesystem
saavy, so it will save all your notebooks in whatever directory you
the notebook server from.
A few more links:
A gallery of publicly available notebooks http://nbviewer.ipython.org/
For great (but mostly long) videos about the notebook, search YouTube
“NextDayVideo” and ipython notebook. Anything by Fernando
perfect. Also Wes McKinney http://www.youtube.com/watch?v=w26x-z-BdWQ
his equally awesome pandas http://pandas.pydata.org/ project for
TL ; DR
The IPython Notebook was developed for scientific computing. It
has some really cool parallel processing stuff built right into it, like
the ability to start and control a local or remote cluster. But it’s
value is in the concept of reproducible research. The idea is that with
one file or project, any individual should be able to reproduce every
in a scientific research paper or textbook. Some people are even
their textbooks in the IPyNB.
There is support for LaTex and symbolic rendering. You can run shell
commands pythonically (just like in the IPython shell). You can even
other interpreters like R using magic functions.
I can imagine some neat SDR tutorials laid out in the IPyNB - e.g.
a filter, then plotting the filter. Generating a signal, then plotting
Generating noise and adding that, then filtering and showing the final
result. The end product is easy to distribute as a single file and
some stress-free non-linear tinkering.