SPICE – My Day Job

My recent announcement on Twitter about the release of SPICE 5.1 public beta prompted a few questions. I also get questions from the occasional interested developer, friend, or family member, so I thought I’d describe it a bit.

My Day Job

Your taxes (and mine) pay my salary. My employer is Lockheed Martin, MSD, Inc. and I work as a contract software developer for the Bioinformatics and Computational Biosciences Branch of the National Institute of Allergy and Infectious Diseases (part of the US Dept. of Health & Human Services).

BCBB is providing their bioinformatics and technology expertise to the VRC (Vaccine Research Center), among other NIAID initiatives. I’ve been working on a software application called SPICE for the VRC for the last three years.

The Problem

The Vaccine Research Center does as their name implies: they research possible vaccines for things like HIV, H1N1, and others. To do this, they administer a test substance and take lots of blood samples over time, looking for a useful immune response.

The blood samples (for many subjects, over different time points, with different vaccination methods) are all washed with a biomarker (a kind of stain that binds to certain cell types or cells that carry out a particular function) run through a machine called a flow cytometer. The flow cytometer bounces different color (wavelength) lasers off the individual cells and detects the presence of these biomarkers, which fluoresce when hit with a particular wavelength.

All this let the researchers know what percentage of cells fall under a specific category. For example, one category might be “what percentage of cells belong to Subject A, one week after the vaccination challenge, that are CD4, Interleukin 2 positive, and Interfereon-gamma negative?”

Now, what do we do with 20,000 categorical measurements? They have to be evaluated in a number of different ways to see if an immune response occurs, what type, when, and how strong (among other things).

You might think, “Okay, load all that up in Excel and start making charts.” There are a number of problems with that approach, but I’ll simplify them: Excel is slow and cumbersome when used for setting up and dynamically modifying complicated data views and its graphing capabilities are vast but don’t quite cover what the researchers need to see.

The researchers may want to average all the subjects together (because average response is more useful than that of an individual), overlay by vaccination type (because an injection might be a better vector than an inhalant), and ignore CD4 cells, looking only at CD8s. Then they might want to eliminate a few subjects who didn’t complete the study. Then they might want to turn the whole thing on its head and compare individual responses, grouping by their study group. All these custom data views would take a lot of effort to configure and reconfigure in Excel.

That’s where SPICE comes in: Simplified Presentation of Incredibly Complex Evaluations. This application allows you to cut, shuffle, recombine, compare, isolate, and reorder this vast categorical data set in near-real-time by drag-and-drop. What’s more, you can choose graph types, format the print-quality graphs, then drag them straight from the graph view into PowerPoint for a nice presentation of your findings, or into Word to write a paper. All this you can do in minutes (even seconds) versus hours.

My Part

I was brought on board to build SPICE 5, a complete rewrite to an in-house tool written and personally maintained by Dr. Mario Roederer. Bright guy.

Through version 4, Mario used an older Mac development library called Carbon. With Carbon’s future looking bleak and Cocoa designated as Apple’s New Hotness for Mac OS X apps, it looked like SPICE needed a good update. With ever-increasing duties keeping him from delving into an entirely new API, Mario needed an experienced Cocoa developer, preferably with a background in biology.

Instead, he got me.

The goal was to bring SPICE over to the Cocoa world – to modernize it and maybe add a few new features. As any developer would expect, there was plenty of scope creep. It took over two years to meet the extra demands placed on the new version (bigger data sets, more options, etc.).

SPICE 5.0 (the version I wrote) gained the ability to handle much larger data sets (while being more efficient with memory) by virtue of using a hash table instead of a sparse matrix. It also gained more formatting features and an easier-to-use data view control panel.

But it was pretty slow for a variety of reasons. Even slower than what we affectionately call, “Old Spice” (cue the whistled Old Spice tune). It also mirrored the “saved settings” mechanism of SPICE 4, where a particular configuration (a “data view” in proper terminology) was saved from the UI or loaded back into the UI.

I’m not a biologist. I’m not a scientist. I don’t even have a Computer Science degree. It took a lot of effort to build version 5.0 and I had no problem building it to “mirror” version 4 as much as possible. Once it was done and I saw what I had made, I realized I understood the problem very well by that point and I began to have some ideas of my own. SPICE 5.1 was very much on my mind.

I think I’ll end this post here as it answers the question of what I’m working on for Uncle Sam. In short, it’s an application that helps researchers identify good vaccine candidates for things like HIV and H1N1.

In my next post, I’ll focus on the development aspect of version 5.1 for you developer types out there.


Opinions and view points expressed in this article are my own. I do not speak for the US Government or my employers.