home>data visualization

The Aurora Project

The initial work with the isogram, controller run-time display, chromatogram and UV-Vis absorbance display took about three months to complete.  The 3D graphics view was conceived, sold to marketing & management, designed, and implemented within an additional seven weeks.  Of all the graphics and controls, the plots used for the UV-Vis chromatogram were taken from an existing common chromatogram display and control library previously developed by another engineer with my collaboration.  It should be noted that this common chromatogram display was a little bit of a compromise to expedite the project and help it fit in with other applications in the Varian chromatography suite.  Unfortunately, the existing chromatography display and control library had no way to flip the x-y plot by ninety degrees as is more intuitive for two orthogonal 2D projections from a 3D plot.  The rest of the controls and rendering were completely new.  I did review, for about one week, the option to use third party libraries such as SiliconGraphics OpenGL and a Microsoft "vapor ware graphics library" for this 3D work.  In the end, I opted to implement the projection transformations myself, along with a interpolated triangular fill, a grid and 3D control.  When completed, the sales and marketing were pleasantly surprised as they were used to a cruder program developed ten years prior.

All the plots are controls that may be adjusted by selecting, dragging, right clicking.  By holding the left mouse down in an isogram window it will zoom in to finer detail (alt click to reverse out).  The color, b/w granularity, and isogram range can be set by clicking on the isogram false color scale.  An optimized inner loop controls the interpolation/extrapolation of the data to pixel transformation.  The Log space transformation is done with a quick little reverse table so that on average just a little more than two double comparisons per pixel instead of a floor(log(double)) computation.  The whole pixel plane is double buffered.  A new scaled pixel map is redrawn with the appropriate portion of the old buffer data, while in a second thread recalculates the true pixel values occurs.  This rendering algorithm (zoom and resize), works equally well with the run time isogram, producing several updates per second on a Pentium I class processor.

All the graphs can be printed or copied and pasted into applications capable of displaying graphics.  The isogram controller button can be clicked to display its miniaturized isogram in full size in the main program.  

Overview of Aurora (PolyView 2000 isogram)


  1. This is the standard isogram view.  It includes a wavelength spectrum and a chromatograph at the current mouse position.  Right clicking will lay down (or delete) a new trace including a chromatogram and/or spectrum at the clicked point.  The background color and trace colors may be selected from a color palette.
  2. Here is another window (MFC concept) displaying the same isogram data, this time in black and white mode.
  3. Another isogram displaying the same data, but this time it is running through the acquisition simulator .  The isogram range and color specification can be changed by clicking on the false color range control or remotely through the acquisition software.  Zooming and selecting/moving traces can be done while the acquisition is occurring in real time.
  4. The 3D plot can be manipulated in a fairly intuitive manner.  Just in case I still have the numerical values enter able for the three axis (Phi, Theta, Gamma) and three scales (time, wavelength, and absorbency).  You cannot zoom in the 3D mode, but it graphs only the isogram range when you pressed the 3D button.  By going back and forth one can select 3D graphing of the range of interest.  See also enlargement below.
  5. A little tribute to the Microsoft Foundation Class.  These buttons change state with the views that they control.  Specifically the cross hair icon that controls the trace mode.  Tracing just the chromatogram, just the spectrum, or both (three states instead of the usual two) is possible by pressing the button.  graphically displaying three states instead of two and a lot more is possible with MFC if you didn't mind going deep into the class structure source and either correcting or augmenting the implementation.

Three Dimensional Viewing In this larger picture the grid almost works properly.  Having completed this 3D functionality with real world data, I have a new appreciation for 3D plotting.  The tricky part about the grid it that it is supposed to lie on the surface of the data and remain in good contrast with the colors.  I did fairly well with the colors, but really need to anti-alias the grid lines.  Otherwise, as we see here with the breaks and absences caused by noise in the data.  I didn't want to give the grid its own channel (pixel plane), but this approach with anti-aliasing may be the easiest answer.

3D Enlagement

The Acquisition Simulator The larger graphical button (the isogram) on the upper right has been embedded in the instrument driver software.  This test harness played back instrument runs to develop and test the isogram button and communications between the driver and the Aurora Application.  In run time this button will update itself and transmit the new data to an Aurora application.  If pressed it will start the Aurora application and/or display the current acquisition in full window mode.  The Aurora application can display the real time data of up to two instruments (an arbitrary choice) and any number of completed experiments.  Check it out, its not an error.  The screen capture duplicated (sort of) the advancing "Saving Spectrum:  212" line.  Very real time!
Controller Test Bed

home>data visualization