The Graphical User Interface

The most complete way to visualize the results is to bring up the main graphical user interface. Therefore, please type

  cal -> gui

The window drawn below (click on it to enlarge it) should appear. On some computers the color management of IDL is very sophisticated. If you do not see colours (the red colour only appears after the threshold has been adjusted) please try

  cal -> gui,/tru

This will use 24bit colors and might help. In some cases it was useful to close the gui and restart it again. All the modifications are recorded and thus available afterwards.


The graphical user interface is divided into various areas and subpanels. Some of them are interactive.


Menu bar

 With exception of the "LAMBDA GUI" all items in the menu bar are also accessible via buttons/areas within the panel itself.

File Listing

 Below the menu bar all used files are listed. These informations can be achieved by

  fringefile = cal -> get_filename()
  photfiles  = cal -> get_filename(/PHOT)
  maskfile   = cal -> get_filename(/MASK)

where photfiles is an array. The name of the object can be stored in the variable object with the command

  object = cal -> get_objectname()


OPD panel

 This panel diplays the optical path difference (OPD) vs. the frame number. Clearly visible are the 80µm scans. During each of the 300 scans 40 exposures have been taken leading to a total amount of 12000 frames. After 2000 frames = 50 scans zero OPD has been found at 11.37 mm and MIDI tracked on it with exception of a few scans between frame number 2000 and frame number 5500.

Photometry Panel

 This panel displays the measured flux vs. the frame number. To get the photometry vs. the pixel number type

  spec = cal -> get_photometry()

Default is to return the sum of all 4 spectra. The Keywords /Atotal and /Btotal return the sum of the two (I1 & I2) A- or B-spectra, respectively. Keywords /A1, /A2, /B1, and /B2 return the corresponding spectrum. Everything is in ADU/sec (conversion factor for MIDI: 145 photons/ADU). The command

  lambda = cal -> lambda()

returns an array that gives wavelength in µm as function of the pixel number. With

  cal -> set_lambda,lambda

the user can set a wavelength calibration.


Fringe Panel

 This panel displays the flux difference (I1-I2) vs. the frame number, i.e. the modulation in the correlated flux. Before MIDI reached zero OPD no fringes are visible. Afterwards, a strong signal could be detected. By typing

  cf = cal -> correlflux()

one gets the correlated flux as function of wavelength. This is a 3 by N array, where N is the number of bins in lambda. The first row (cf[0,*]) is the wavelength in the center of the bins, the second row (cf[1,*]) is the width of the wavelength bins, and the third row (cf[2,*]) is the correlated flux in ADU/sec (conversion factor for MIDI: 145 photons/ADU).

Keyword /PLOT will plot the good and bad fringes in the lambda bins, and the correlated flux. Keyword /CFPLOT will plot only the correlated flux.

To set the binning in wavelength one can use the command

  cal -> set_lambda_bins, start, end, step, width

where start is the number of the first column used, end the number of the last column used, step the spacing between columns, and width the number of columns added for one bin. For example

  cal -> set_lambda_bins, 0, 100, 25, 50

will set the bins 0...49, 25...74, 50...99, 75...124, and 100...149 pixels. Please notice that a bin can extend beyond the given end column. An interactive tool to define the bins is the "LAMBDA GUI". It can be started from the menu or with

  cal -> lambda_gui


Fourier Fringe Amplitude Panel

 This panel displays the maximum Fourier amplitude of the fringes in the white light, i.e. integrated over wavelength vs. the scan number. To get the amplitude, we integrate over wavelength, Fourier-transform each scan, add up the power spectrum at the frequencies where we expect fringes, and calculate the square root. To get the maximum amplitude of the white light fringe use

  whitelight = cal -> whitefringeampl()

The command

  fringes = cal -> fringes()

returns a 3D-array: fringes[0,*,*] is the OPD and fringes[1,*,*] the fringe amplitude. The third index counts the scan, the second the frame-number within a scan.


Histogram of Fourier-Amplitudes & Mean Optical Path Length

 On the lower right panel two histograms are drawn. One displays the distribution of the scans with respect to the fourier amplitude and the other with respect to the mean optical path difference. Three thresholds can be set.
  1. Threshold for good scans (solid vertical line in FA-histogram, dotted upper horizontal line in OPD panel)
  2. Threshold for bad scans (dotted line in FA-histogram, dotted lower horizontal line in OPD panel)
  3. Minimum distance of "noise scans" from the median OPD in meters (solid vertical lines in the OPD-histogram). Scans with a mean OPD that is more than this distance away from the median OPD of all scans are used to estimate the noise in the power spectrum.
These tresholds can be set either interactively by dragging the lines in the histograms with the mouse pointer, or on the IDL prompt by the command

  cal -> set_thresholds, good, bad, noiseopd

where noiseopd is optional. To read out the current values type

  th = cal -> get_thresholds()

The percentage of good and bad scans with the current thresholds is returned by

  gb = cal -> get_percent_goodbad()


Good and Bad Fringes


The spectral power of the good and the bad fringes vs. the frequency is plotted on the lower left panel of the GUI. The vertical dashed lines mark the frequency range where fringes are expected, i.e.

  ν_min = floor (δ / λ_max + 0.5)
  ν_max = floor (δ / λ_min + 0.5)

δ is the length of a scan. The symmetry of the plots, i.e. the right side is a mirrored left side, is an artifact of the fourier transformation. The blue curve is the mean of all the white curves.


By clicking onto the plots a window opens. It displays the plots for the different wavelength bins set with the "LAMBDA GUI" or the corresponding command set_lambda_bins (see above). The good fringes are plotted on the left side, the bad fringes on the right side. The frequency range, where the fringes are expected moves from lower to higher frequencies, because the binned wavelengths are decreasing. Another window opens simultaneously. It shows the visibility of the object.


The corresponding command that delivers the same informations is

  visi = cal -> visibility()

This command is similar to correlflux(), except that visi[2,*] contains the visibility and not the correlated flux. The first row (visi[0,*]) is the wavelength in the center of the bins and the second row (visi[1,*]) is the width of the wavelength bins.

The optional keyword /PLOT plots the above shown lambda-binned spectral power and /VISPLOT the visibility graph.


Info Panel

 The panel in the center summarizes the most important quantities given in various subpanels and offers a few buttons.

  • "Fringe Movie" displays for each scan the fringe signal vs. the OPD (see below)

  • "Fourier Movie" displays for each scan the spectral power of the good fringes vs. the frequency (see below)

  • "Hardcopy" saves a postscript-file with the current view of the GUI. This can also be done on the IDL command line by

      cal -> hardcopy, filename

    where filename is the name of the postscript-file to print to. If the name is omitted it will be created from the name of the fringe data. /NCOLOR prints in black and white, /TRACES prints the traces, too, and /DONTCLOSE doesn't close the file afterwards, so you can append more plots

  • "Write to log" writes a brief log in the file ' <path>/visibilities'

  • "Quit" quits the GUI. To destroy the object and free all its memory use

      obj_destroy, cal

    If you fail to do this before re-using the variable, the object will stay in memory. There's no way to destroy it once the reference to it is lost (IDL has no garbage collection).