Software for experimentalists

A long time ago, all you needed to think about and record the data you were interested in was a pen and some vellum, and maybe a few candles and a trusty manservant. Somewhere along the line, the chart recorder got invented, and when combined with the oscilloscope and those awful scope cameras, a whole new world of data recording and storage was available. Having one’s own ENIAC was pretty helpful, too, especially once manservants (and really, all of bored-noble-of-means science) became gauche.

These days we’re a little bit more sophisticated. Computers are indispensable parts of every physics lab, and there’s various pieces of software that have become somewhat ubiquitous. If I ever have the blessing or curse of grad students, here’s what I’d want them to be able to use, and what I try to be useful with myself:

Labview. This venerable suite is ridiculously dominant in the small-lab physics world, and it’s easy to see why. It interfaces with hardware well, has an intuitive feel that is easy to pick up quickly, even as a youngster, and is well-supported and documented. I use it to run experiments, connecting with and programming various analog-to-digital converters, pulse generators, and any number of GPIB devices. Its main drawback is a general sense of aesthetic unpleasantness.

Mathematica. Stephen Wolfram’s squalling baby has become the default tool for so many of my physics needs that despite its steep learning curve it remains second-to-none. It’s a bit more suited to symbolic theoretical analysis and visualization than data processing, which is why for raw data I like to use other packages, like:

Matlab. Great for anything involving numbers, and arrays of numbers. For theoretical work I don’t really know how I’d use it, since it’s not really a symbolic package, but I really like the intuitive way in which it handles arrays. I’ve also been loyal ever since I spent a few months at my pre-PhD job converting old Fortran nested loops into Matlab array operations.

Unfortunately, the culture of my current lab favors another package, Igor, which I initially loathed but have come to at least tolerate. I don’t think anyone out there will start using it from my recommendation, and those of you in the Igor cult are already converted, so I won’t say any more.

For an idea of how it’s all put together, I typically do calculations and modeling (before and after taking data!) for an experiment in Mathematica, take the data using LabView, which sends the raw data to Igor or Matlab to be played with and analyzed; fun times are had by all.

Please commence arcane software flamewars now. Before you tell me, though, I’m fully aware that Mathematica has near-infinite capabilities, and that Python can fully replace the very, very expensive Matlab. Just don’t tell me to use Maple or MathCad.