Tell Me About ISIS

Jumping off from this discussion, I'd like to hear more about what ISIS is all about, and whether I should consider using it. I work primarily with Cassini ISS data, and my main issue is that, since I work with rings, I'm interested in a cylindrical coordinate system rather than a spherical one. My other issue is that I'm accustomed to using IDL rather than C++, but I could consider changing if other issues came together.

How significant are the "unique capabilities for processing data from NASA spacecraft missions"? Does this mean that Spice geometry, image distortion, and other things are easily taken care of? Is there (or could there be if I helped) support for a rings coordinate system? What more should I know about ISIS?

ISIS

Where to start. Historically, ISIS was developed to work with imaging and spectroscopic spacecraft data of solid (mostly spheroidal) planetary bodies. As such, there are lots of calibration and geometry routines that have been developed for specific spacecraft missions. The ISIS programmers have a history of working directly with instrument teams, and therefore their calibration routines are dependable and robust. For example, ISIS makes it almost trivial to process Mars Orbiter Camera (MOC) data from a raw PDS image to a cleaned, calibrated, map-projected image with just one command. So yes, ISIS depends on SPICE information, and a detailed knowledge of instrument optics and quirks to make image processing of spacecraft data reasonably straightforward. However, as a system that has been developed for over 30 years across a number of different programming and interface languages, it has a number of its own quirks and can be kind of difficult to break into without some help.

Hence the ISIS 3 effort. The stable version of ISIS is 2.1 (although they don't really have a rigid versioning system, hopefully another change that we will see with ISIS 3), and its parts are written in a collection of C, FORTRAN, Perl, shell, and probably other stuff. ISIS 3 is a complete re-write of ISIS functionality in C++. The intent is to sweep out the cobwebs, document everything, and write everything in C++, whose object-oriented templatable API goodness will enable other folks to easily snap their own software into an ISIS processing pipeline without too much trouble. However, ISIS 3 is still in Beta, and does not yet fully reproduce ISIS 2 functionality.

In lightly skimming through the ISIS webpage and documents, I don't see anything that looks specific to rings, however there are cylindrical map projections available (but that may not really be what you are after). The ISIS support forums are very helpful, and you may want to post a question there about image processing of rings. Either the programmers might be able to point you to some specific ISIS programs, or they may be able to refer you to someone that actively uses ISIS on rings data. This is an area where I don't have any personal experience, so there might actually be a simple way to process rings data with ISIS, or it may be more trouble than it is worth. If there isn't, I would imagine that ISIS would be happy to have that functionality, but probably don't have the funding to provide it. Again, if you (or a group of people) were willing, I think you should be able to write some things that would fit into ISIS 3 (I really wouldn't develop for ISIS 2 at this time).