Lab Software setup

Lab Software Setup

Lab Configuration

The goal of the lab configuration here is to be a fully functional, collaborative, and convenient environment to accomplish the lab goals.

Here we rely on free and open source tools when possible. In your future business environments it is often beneficial to leverage time and money for long-term investment gains in productivity, but in academic environments where turnover is relatively high and resources are scarce, we rely on open source software by default. As a benefit to the community we are also capable of contributing to these projects when appropriate. Such open tools enable aspiring students to experiment at home on their own projects and carry their acquired skills with them in later work environments. If you have experience with proprietary equivalents, feel free to use those for your personal use, but we collectively support open source tools when we can.

Email/Instant Messaging/Video conferencing

Get on the lab email list –

Everyone should be accessible on gChat (or alternately, skype) with video capabilities for weekly meetings or to arrange times for questions when working on portions of your project that might require more interaction.

Python Software

We are a python-based lab. Although this is likely to change in the distant future, the Python community has the best supported environment which is both dynamic and command line for quick analysis (like Matlab) but also a fully-functional programming “glue” language which allows people to use a variety of tools including C or C++ for low level programming, and R for free high-level language alternatives.

We primarily rely on the Enthought Python Distribution, which is free for academic use. Most of the packages within it are freely available, however, Enthought greatly simplifies installation.

It is highly recommended that you download and use PIP for additional package downloads and updates as the need arises.

Python Documentation

If your code is likely to be used by others, document every function. Code that is not documented is essentially useless to others, and well documented code often beats well-functioning code in adoption. Include a README.txt or other equivalent to orient someone to the structure of your code base. For large-scale collaborative projects, consider standard documentation tools like Sphinx, etc.


For the website we use multi-site wordpress – leveraging convenience in creating content over flexibility in development. You should receive or request a username. In the meantime, the generic username is the same as the website ( and uses the lab password. This is useful for updating about posters and papers, as well as creating your own webpages and improvements to the site yourself. You are encouraged to also create a website for yourself. In that case, we would recommend google sites for ease of use.

Citation Manager

Mendeley offers a way of organizing pdfs and citations, and can integrate with MS Word to make your paper writing much easier. Also it’s free. However, individually you can choose to use Endnote, which offers many of the same features.

Project Repositories

For version control, we use git. You should be familiar with using git for version control coming into this lab. It’s a good habit on individual projects, and critical in shared projects. For private/beginning repositories we use bitbucket, and for public and more major projects we move them togithub.

Figures/Image Processing

Export vector graphics when possible, specifically svg or eps format when available. Inkscape supports most vector graphics formats, and is free to download. Adobe Illustrator is also recommended when you/we have the funds.

For image manipulation, if vector graphics programs do not meet your needs, there are raster graphics programs available. Gimp is a freeware tool, with the Adobe commercial equivalent is Photoshop. Both have their learning curves, however, it is easier to stick with one than switch between the two.

IDE/Project management

We use Eclipse + Pydev. You can use this and make it easier for us to help you when you run into problems. Get used to using the debugger. Without it, data analysis and finding problems can take a long time. This is especially true for those of you with experience in MATLAB. If you want a matlab-like interface, you can use Spyder, or similar IDEs, but this may tie your hands when trying to go beyond scripting projects or working outside the Python/Matlab world.

For individual projects, testing frameworks and documentation standards are encouraged. For projects which are expected to continue beyond your time or your individual efforts, you MUST write with testing and documentation as part of your daily workflow – you should be writing test code and documentation as you go. Also note that documentation must also go beyond doc strings or comments in code to be useful.