Software Developed Here

From time to time, we have developed software to solve a specific problem. We are making some of the more fully developed programs available here in the hopes that others might find them useful. This software is provided free of charge and with absolutely no warranty. It may be distributed to others but may not be incorporated into commercial products.
If you do find any of the software or documentation useful,

Utah SAXS Tools

Two of the techniques that we use to study unfolded proteins are small-angle X-ray scattering (SAXS) and its close relative, small-angle neutron scattering (SANS). To facilitate the processing and analysis of data from these techniques, I have written a set of software tools that can be run on any of the major operating systems.
The Utah SAXS Tools are a collection of small programs for processing and analyzing small-angle X-ray and neutron scattering data. Although most of the programs were written for processing data from the Anton-Paar SAXSess instrument, a commercial line-collimated laboratory-scale camera, some of the software is also be useful for data collected with other instruments. The documentation also provides background information on slit smearing and its correction and on the units and calibration of scattering intensities that should be useful to a variety of users.
A variety of programs for different computer platforms are available for processing and analyzing SAXS data. These include both commercial products, such as SAXSquant, which is provided with the Anton Paar SAXSess instrument, and free software, including the extensive set of programs developed by group of Dmitri Svergun at the European Molecular Biology Laboratory Also of special note is the Irena macro package for the commercial data analysis and graphing program Igor Pro ( One might reasonably ask, then, why develop another set of SAXS data tools? The programs described here are, in fact, much less ambitious than many of those available elsewhere and are in some respects less user friendly. They do have some virtues, however, including the fact that they can be used on almost any platform that supports Python (including the Macintosh with OS X), and they rely only on publicly available software.
There are two major components of the Utah SAXS Tools. The first is a set of macros (saxsImage) for the ImageJ program, a widely-used scientific image analysis program developed by Wayne Rasband at the U.S. National Institutes of Health. The saxsImage macros create new menu commands for imageJ that are specifically designed for integrating the two-dimensional image data from the SAXSess camera, as well as analyzing the beam profile. The data from saxsImage are saved in the PDH file format of Glatter et al, with special provisions for storing the beam-profile information. The second component is a set of programs, written in the Python language, for processing, analyzing and plotting the scattering data. These programs are run using a command-line interface: A shell in Unix-like operating systems (including Mac OS X) or the DOS window in the Windows operating systems. While this approach is, in some respects, less user-friendly than a graphical interface with menus etc, with a bit of experience it can become a very efficient way of working. In particular, the user is freed from the repetitive use of dialog boxes for opening and saving files, as well as other operations. The programs can also be called from scripts that automate some of the data-processing steps.

Download the Utah SAXS Tools
Download the documentation (pdf)


This program allows a Macintosh computer to control a simple single-beam spectrophotometer via a serial port connection. The major use of MacSpec is for kinetic experiments in which absorbance measurements are made at timed intervals from one or more cuvettes. The computer sends commands to control the spectrophotometer and records the data it receives back. The original version was written more about 20 years ago by Jing Dong Liu, then a graduate student in the Biology Department, for a biochemistry lab course (the predecessor of our current course, Biology 3515/Chemistry 3515). Later, Benjamin and David Goldenberg wrote a new version, MacSpec II, using REALbasic, a software-development tool described below. In addition to its use in the teaching lab, we use the program extensively in our research.


The major use of MacSpec is for kinetic experiments in which absorbance measurements are made at timed intervals from one or more cuvettes. The computer sends commands to control the spectrophotometer and records the data it receives back. If the spectrophotometer has a multi-cuvette holder that can be controlled via the serial port, the program can collect data from several cuvettes simultaneously. This is particularly useful for enzyme kinetics experiments.
Features of the latest version, MacSpec II 1.6 include: Eventually, we would like to add the capability for wavelength scanning.


MacSpec is intended to be used with relatively inexpensive spectrophotometers that can be controlled via a serial port. There are several such instruments on the market, typically with prices in the range of $5,000 - $10,000. Using a computer with a simple spectrophotometer can be a cost-effective way of adding a great deal of functionality, provided that suitable software is available. Unfortunately, while many instruments can be controlled via a serial connection, each has its own command set which must be incorporated in the software. The current version of MacSpec can control four different spectrophotometer models. Sadly, three of them, the Spectronic 2001, Pharmacia Ultrospec III and Spectronic Genesys 8, have been discontinued by their manufacturers. The fourth is the Beckman DU 600 series and is currently in production. The program is written in a modular way so that it should be relatively easy to modify it for use with other instruments, so long as the instrument has a serial port and the command set is available. Usually, this information is provided in the manual for the spectrophotometer or can be obtained from the manufacturer. We would be happy to provide the source code for MacSpec and might even be able to help a little with the modifications.

About serial connections

The serial connection is one of the oldest bits of computer technology that is still with us, if for only a while longer. It was originally designed to connect computers or terminals to modems, but it has also has also been used to connect computers to each other, to printers and to a variety of peripheral devices including scientific instruments. The good thing about a serial connection is that it is relatively easy to write software to transmit data over it. The worst, probably, is the fact that it is one of the least standardized standards in the computer industry. Different connectors are used, and, even worse, different equipment manufacturers have different ideas about how the connector pins should be wired! Finding a cable with the right kind of connector at each end is no guarantee that it will work. The serial connection is also relatively slow by modern standards, but that is not at all a problem for this application.
To the extent that they follow any standard, most instrument manufacturers will specify that the serial port is an "RS-232" connection. None of the current Macintoshes have have serial ports, but there are adaptors that allow serial devices to be connected via the USB port found on the newer machines. These, and the serial ports found on older Macs, are not actually RS-232 connections, but are RS-422 ports, and use the small circular DIN-8 plug. Fortunately, the two standards are similar enough that it is usually possible to get the Mac to talk to a serial device, though it may take some trial and error and some soldering. The documentation for MacSpec explains how to connect a Macintosh to the spectrophotometers it currently supports, and much more detailed information about serial ports and Macintoshes is available here.

USB Connections

As noted above, none of the current Macs have serial ports, so that you will have to use a USB-serial adaptor to use MacSpec with one of these machines. (On the other hand, controlling a spectrophotometer is an ideal application for an older Mac that is being pushed aside for one of the new shiny machines.) There are several adaptors on the market, each with its own driver software. Our limited experimentation indicates that some work better than others, but we have had pretty good luck with the Keyspan Twin-Serial Adaptor. More information on using USB-serial adaptors is provided in the documentation.

REALbasic, Real Studio and Xojo

MacSpec was written using REALbasic, which was subsequently renamed Real Studio and then Xojo. Xojo, like its predecessors, is a computer language and development environment that is quite similar to, and somewhat compatible with, VisualBasic, a widely used Microsoft product. Like VisualBasic, Xojo uses a graphical interface that makes it relatively easy to build an application with its own sophisticated interface. The language is object-oriented and bears almost no resemblance to the original Basic language. Programs written in Xojo are compiled to create stand-alone applications and can be compiled for Mac OS X, Windows or Linux. So, it should be relatively easy to port MacSpec to Windows or Linux, though we haven't tried it. The current version of MacSpec uses a set of very nice open-source Xojo graphing routines, DataPlotClasses, by Roger Meier. For more information on Xojo, visit the company's web site.


Three versions of MacSpec are currently available, one for the Classic Mac operating system, one for OS X through version 10.6 and one for OS X version 10.6 and later. The first two versions were built from the same source code, but, because the two operating systems handle the serial port differently, they had to be compiled individually. The classic version is intended only for older Macintoshes that are booted into the older operating systems; It cannot be used in the Classic environment of OS X. Unlike the classic Mac version, the OS X version does not lock out other processes during a kinetics run. Also, the handling of the Keyspan USB serial adaptor is much smoother in the OS X version. The newest version, for OS X 10.6 and later, has also been modernized somewhat and makes nicer graphs that can be saved as png files. The documentation provided is somewhat outdated, but should be sufficient to get started with the newer version.
Download MacSpec for Classic Mac OS
Download MacSpec for Mac OS X through 10.6.8
Download MacSpec for OS X 10.6 and later

Mathematica Notebook and Libraries for NMR Calculations

As an appendix to a paper on the product operator formalism published in Concepts in Magnetic Resonance, I have written two libraries of functions for quantum NMR calculations and a notebook containing the calculations presented in the paper. One of the libraries is for an isolated spin-1/2 particles (or populations of spins), and the other is for scalar-coupled spin-1/2 particles. For more details, see the introduction to the notebook, which is included in the package as a pdf file, as well as the Mathematica file.
The notebook can can be read using a free Mathematica Player, available from Wolfram Research, but a licensed version of Mathematica is necessary to edit the notebook or do new calculations. The libraries are only necessary for new calculations. Download the Mathematica files

I have also written a very similar set of libraries for the free open-source computer algebra system, Maxima, along with wxMaxima workbooks, as supplements to my book. For information about these libraries and workbooks, see the page for Principles of NMR Spectroscopy.

Macintosh Serial Port Interfacing

This isn't software in the usual sense, but in the course of developing MacSpec, we spent a lot of time trying to understand the arcane subject of serial ports. A summary of what we learned about all this is available as either html or a pdf file (Adobe Acrobat).


This is a small Macintosh utility program for converting the binary data files generated by the Rainin Dynamax and MacIntegrator chromatography systems into text files. These products, which have long been out of production, included a hardware interface and software to control high pressure liquid chromatography (HPLC) instruments. Converting the binary data into text files adds great flexibility in data analysis and plotting.
Although this program was written nearly 20 years ago on a Macintosh Quadra running OS 7, it still runs in the Classic environment in some versions of OS X, and ChromData is periodically downloaded from this site!
To use the program, simply launch it and then open the Dynamax file using the Open command in the File menu.
Download ChromData


This is a set of Perl scripts for converting NMR distance restraint data from the format used by DYANA (recently superseded by CYANA) to that for XPLOR (superseded by CNS).
Download dyana2xplor

Simulations of unfolded proteins with DYANA/CYANA

We have used the program DYANA, and its replacement CYANA, to simulate the properties of unfolded proteins, assuming a "random coil" model. The original paper describing this approach is:

Computational simulation of the statistical properties of unfolded proteins.
Goldenberg, D. P. (2003) J. Mol. Biol. 326, 1615-1633. Medline

This tar package includes the programs and scripts that were used in conjunction with DYANA for this paper, along with documentation and a sample calculation.
Download DyanaChainStats

An updated version of this package will be posted when time allows!