Everyone has a preferred tool for creating plots using scientific data, from gnuplot to Excel. I use Python for all of my work, so I use something avaialable for it. Matplotlib is a powerful and versatile plotting library for Python. You can save the figures as PDF for inclusion in LaTeX-generated documents and SVG (depending on the complexity of the plot) for e.g. PowerPoint.

Python logo


For my PhD, I have used Python for almost everything, e.g. running simulations on SpiNNaker, playing around with Django and analysing simulation results. I will list some of my favourite libraries here:
  • Matplotlib - see above
  • Numpy - vector and matrix operations using C and Fortran under the hood
  • argparser - easily pass parameters into scripts with useful names
  • brian2 - neural simulator, however I use it for the SI units
  • scipy - all things statstics, plays well with numpy
  • sklearn - all things learning, I use it for statstics
  • Jupyter - notebooks are useful for code with interspersed markdown. Sometimes useful when developping plots.
Everyone needs a good debugger / development environment. I recommend PyCharm, although development can be done using other tools, such as Eclipse. I also have several Python environments; pre-packaged ones come with useful libraries such as numpy, scipy, Jupyter pre-installed. I use WinPython on Windows and Anaconda on Linux.

Mendeley Logo


Mendeley is a reference manager. I've been using it since I started my PhD and I currently have over 1100 entries in my library (almost 3 years later). Mendeley also offers a data storage and citation service - it's good science to provide code and data alongside publications.

MobaXterm Logo JuiceSSH Logo

MobaXterm and JuiceSSH

Who needs sleep when you could be connecting to your remote server and investigate your simulations? On Windows I use MobaXterm and on Android I use JuiceSSH.


For the fun of watching your progress on your own thesis, use Gource. It is run inside a git repository.

Docker Logo


I've recently become much more concerned with replicability of results, as well as the rapid creation of environments in which to test software tool chains. Thus, I have begun experimenting with Docker containers. To begin with, I have made a few versions of SpiNNaker-related containers. These have various versions of the tools pre-installed in them. My Docker hub can be found here.