Saturday, October 5, 2013

Ipython, Julia and bioinformatics

Recently at my new job I have been doing a fair amount of exploratory coding and writing simulations for various things in Python. However, recently I explored Julia, a new language designed for technical computing. My initial impression is that the language takes the best of Matlab, python, and lisp to create a concise technical programming language. Parallelism is handled through worker processes, which can be either remote or local, thus a program can quickly be tested on a local multicore machine and then deployed onto a cluster without changing the code. This seems like a very nice feature. To me this is not the strongest feature. Any language in isolation might be wonderful, however a good environment is critical to using it. Luckily they have collaborated with the folks working on IPython notebooks to use the same interface and create an IJulia profile. Since I do most of my work in IPython notebooks this is a huge win in my mind. For exploring algorithms the notebooks provide a perfect environment to document the math, as well as write initial versions and display results.

While Julia is promising for doing lots of technical computing and simulation work, it is still young and does not have all of the libraries one might wish for while writing production code. For me this means it will remain a great environment for exploring ideas but most things will be reworked in python for production. Luckily they do have a good python binding so I will be able to incrementally move things over and still use them in my notebooks as imported methods.

For those of you interested in bioinformatics a great resource I came across today is Rosalind. It is similar to Project Euler with puzzles of various difficulty. However the focus of those puzzles isn't pure mathematics but instead bioinformatics. Each puzzle is also accompanied by a short summary of the biological basis of the programming problem. This makes it great for both programmers looking at bioinformatics, as well as biologists looking to learn some informatics.

No comments:

Post a Comment