Important Skills / Software

Programming Languages:

The primary language we use is Julia. It is a very easy language to learn, written by scientists, with the goal of being consistent and high performance. In addition to working with people in the lab, there are lots of online tutorials available.

Although we use Julia internally, many other labs use the more popular language Python. It is probably good for you to become comfortable with this language as well, primarily for outside collaborations or using packages developed by other labs.

Interfaces:

Almost all of our programs are implemented on Linux systems and are run on the terminal, so it’s important to be comfortable with the Linux terminal (specifically Bash or Zsh).

We also extensively use the Jupyter notebook interface for developing our scripts, so it is also important to understand the basics of working in that environment.

Libraries:

While you can accomplish a lot using just matrix multiplication, things get easier when using premade libraries. Here are a few of the Julia libraries that we use a lot, that would be good to read up on:

  • Flux – A simple (yet powerful) machine learning library (similar to PyTorch or TensorFlow)
  • DSP.jl – Basic functions for digital signal processing (like filtering and spectrograms)
  • DrWatson – A very nice helper library to keep track of iterations of scripts and to make sure you always are using the same package versions (good for reproducibility!)
  • Pluto.jl – An up-and-coming notebook alternative to Jupyter. One of the big benefits is its “reactive” system, which makes notebooks fully reproducible, not being dependent on the order in which you run cells.