I've been doing a great deal of NumPy and matplotlib again lately, every day for hours a day. In conjunction with the new features in Python 3, this has been quite a lot of fun -- the most fun I've had with Python in years (thanks Guido, et al!). As you might have guessed, I'm also using it with Erlang (specifically, LFE), but that too is for a post yet to come.
With all this matplotlib and numpy work in standard Python, I've been going through Lisp withdrawals and needed to work with it from a fresh perspective. Needless to say, I had an enormous amount of fun doing this. Naturally, I decided to share with folks how one can do the latest and greatest with the tools of Python scientific computing, but in the syntax of the Python community's best kept secret: Clojure-Flavoured Python (Github, Twitter, Wikipedia).
Spoiler: observed data and polynomial curve fitting |
Nearly every cell in the tutorial notebook is in Hy, and for that we owe a huge thanks to yardsale8 for his Hy IPython magics code. For those that love Python and Lisp equally, who are familiar with the ecosystems' tools, Hy offers a wonderful option for being highly productive with a language supporting Lisp- and Clojure-style macros. You can get your work done, have a great time doing it, and let that inner code artist out!
(In fact, I've started writing a macro for one of the examples in the tutorial, offering a more Lisp-like syntax for creating class methods. We'll see what Paul Tagliamonte has to say about it when it's done ... !)
If you want to check out the notebook code and run it locally, just do the following:
This will do the following:
- Create a virtualenv using Python 3
- Download all the dependencies, and then
- Start up the notebook using a local IPython HTTP server
If you just want to read along, you're more than welcome to do that as well, thanks to the IPython NBViewer service. Here's the link: Scientific Computing with Hy: Linear Regressions.
One thing I couldn't get working was the community-provided code for generating tables of contents in IPython notebooks. If you have any expertise in this area, I'd love to get your feedback to see how I need to configure the custom ihy IPython profile for this tutorial.
Without that, I've opted for the manual approach and have provided a table of contents here:
- Introduction
- Preparation
- Loading the Observed Data
- Viewing the Data
- Curve-Fitting
- Polynomial Linear Regression
- A Linear Model Class
- Plotting the Model with the Observed Data
If all goes well, you will enjoy that as much as I did :-)
More soon ...
May I suggest using the hy-kernel (https://github.com/bollwyvl/hy_kernel/) to avoid typing the %%hylang magic each time.
ReplyDeleteFor the nbtoc, I suggest hopping on gitter.im/ipython/ipython, we'll be happy to help you live debug.
[note: sorry if double post, browser crashed, so not sure it it went through]
@Matthias -- wow! I didn't know that someone had created a Hy kernel for IPython already! Just looked at the github page ... I'm so excited -- can't wait to try it out :-)
ReplyDeleteHeading over to gitter.im/ipython/ipython now ...