Choosing Python
Mon 14 May 2012 by Dr. Dirk ColbryBlog post edited by Anonymous - "Migrated to Confluence 4.0"
This summer I have some undergraduate students working with me to help jumpstart the image phenomics research projects. Much of what we are doing will be experimental, and we will work on separate projects that are closely integrated. Managing this process requires a lot of planning, and one of the first decisions I needed to make was selecting a programming language. The following are a few of the selection criteria I considered:
- Available image processing tools and libraries
- Video decoding libraries
- Small learning curve
- Easy to install on new system
- Within my research budget ($300)
- Large support community
- Visualization tools
Given these constraints, I explored the following options:
- Java
- Matlab and/or Octave
- C/C++
- Python
Ultimately, I choose Python for a number of reasons. A few points that won me over include:
- Interprative language, enabling fast software development
- IPython notebook , for teaching and group work
- Enthought integrated installer (free to academic users), enabling a common interface and baseline scientific modules that we can all work from
- Wide range of useful packages in image processing and software carpentry http://www.enthought.com/products/epdlibraries.php
- My general interest in understanding python better
- Open source
Although I have used Python in the past, I am not a Python expert. Some of the reservations I have moving to Python include:
- WhiteSpace delimination. Python fans don't see this as a problem, but I have some reservations. However, the only way for me to know is to jump in and try it out.
- Module loading and libraries. One of the great benefits of MATLAB is the ease of installing and loading useful research libraries. My hope is the Enthought product will get me where I want to go with Python.
- Limited and ever changing standards. Although i assume that Python is better than C/C++, there are very few standards and every module development group is doing something different. I need reproducible science, and I worry that I will constantly be needing to check the programming packages because of constant upgrades and changes.
- Other installation difficulties. I need a system that is easy to install on a new system because I need to be able to give the software to researchers with little or no programming experience. I do not know an easy way to package an executable that researchers can readily distribute to their students' computers.
After making the decision to use Python for our summer research group, I talked to a number of people who also voiced an interest in learing more about Python this summer. It looks like we may even put together a weekly discussion group to talk about all things related to scientific Python. My hope is that by the end of the summer I will have a much better understanding of the benefits and limitations of Python for Image Phenomics research.
- Dirk
Blogpost migrated from ICER Wiki using custom python script. Comment on errors below.