$SSW_HESSI/idl/image/memvis/hsi_memvis.pro
Not called directly, but as follows:
IDL> o=hsi_image()
IDL> o->set,image_alg='memvis'
IDL> image_memvis=o->getdata()
image_memvis will contain a two dimensional array of the reconstructed cartesian (rectangular) image with image dimensions, pixel sizes, and location specified inside the image object.
MEMVIS, Maximum Entropy using Visibilities (pdf) (ps) - Andrew Conway (25 October 2000)
What the heck are visibilities? - Ed Schmahl (19 March 1999)
MEMVIS is a maximum entropy reconstruction of an image. In contrast to mem_sato, it works with visibilities rather the counts. The visibilities, which are complex numbers, are components of the 2D Fourier Transform of the image that do not contain the effects of spin axis wandering, grid orientation, grid transmission variations, modulation amplitude variations, and live-time variations.
The visibilities, and the variances associated with their real and imaginary parts are constructed from the counts by the routine hsi_get_visvar (see separate documentation on that for further details).
Time interval | Must be a multiple of 4s. |
Energy range | Any, as long as sufficient photons are available for the chosen detectors. |
Detectors | Any, as long as there is at least roughly one photon per time bin for the detector with the finest grid used. At about this level or lower it may not be possible to reconstruct the visibilities from the counts (see hsi_get_visvar). |
Time bin sizes | Default values are used. Any user's choice of
time bin selection is overridden. Also, the automatic time bin selection procedure is turned off. |
Source position | If the source is closer than 100" - 200" of the spin axis position projected onto the Sun, then it may not be possible to reconstruct the visibilities from the counts. This is dependent on the number of counts. |
Counts | The minimum limit on the number of counts is discussed above. Since the "noise" on the visibilities is not "Poisson", there isn't a problem in using χ2 at low count rates (when time bins contain counts like 0,1,1,0,0,1,0,0...). There will be a problem, however, if long sequences of zero counts are present, in which case image reconstruction is probably impossible anyway. Systematic errors may be exposed for counts of 100,000 or greater. |
All memvis control parameters are prefixed by vis_ and have a similar meaning to those of mem_sato, prefixed by sato_. However, the absolute value of the parameters may have a different effect. A full listing is given in the GUI Guide. The principal parameters are as follows:
Parameter | Function | Default |
vis_lnorm | Controls the initial strength of the entropy constraint. A small value corresponds to a very strong smoothness constraint, and a large value corresponds to a very weak constraint. A large value allows for very fast reconstruction of an image of point sources, but will result in very poor broken up images if the sources are extended. The default is currently 1e-5, which is a low value allowing for safe, but slow, reconstruction of most sources. | 10-5 |
vis_lambda_max | During image reconstruction, each lambda iteration corresponds to a weakening of the smoothness constraint, allowing a better fit (smaller χ2) to the data. This parameter sets the maximum value that the lambda iteration can reach at which point mem_vis will exit and return the last image. Note that the lambda iteration step is not fixed, it accelerates as the image reconstruction progresses. | 20 |
vis_chi_limit | Sets the χ2 at which the image reconstruction will cease. | 1.1 |
vis_no_chi2 | If set to 1, mem_vis iterates to vis_lambda_max, and ignores vis_chi_limit. | 0 |
vis_iter_max | Maximum number of iterations before procedure stops. | 150 |
Note: mem_vis may terminate before either the chi_limit or lambda_max is reached if χ2 increases or persistently decreases too slowly.
None
memvis opens a plot window with one or two plots in it.
All image maps are cartesian (rectangular) with their center at the xy-offset specified in the image object. Pixel sizes and image dimensions are also set according to the values in the object.
If a simulated model was used, the first plot is that of the model source. The second plot, or the only plot if there was no simulated model, is that of the best reconstruction at the end of the last lambda iteration. The reduced χ2 associated with the visibilities for the displayed image is also given in the plot window.
The progress bar indicates the progress towards the value of vis_lambda_max. The progress will usually be faster than indicated because an image giving a χ2 of < vis_chi_limit might be achieved first, and also because the lambda iterations accelerate.
The IDL command line or console window will display the current lambda iteration number and the iteration within that lambda value together with its χ2 value.
MEMVIS produces no error messages itself once the iterations have begun (except for software bugs). It will not run if there is a non-integer number of rotations, or if the counts are insufficient to reconstruct visibilities for any one of the detectors (usually the finest) .
The reconstructed image is returned by o->getdata().
The following remedies are recommended for spurious results:
If the final image has the reduced χ2 > 1, try increasing vis_lambda_max if it was reached, and running the reconstruction again.
A larger value of lnorm may speed up the reconstruction, but at the price of a broken up image.
If the iterations stopped because χ2 wasn't decreasing fast enough, or was increasing, try altering the value of vis_lnorm.
If the final image appears broken up or shows patterns, try reducing vis_lnorm by a factor of ten and running the reconstruction again.
In order of priority:
None are urgent - work has begun on 1 - the others will follow in coming months.