Getting Started | Documentation | Glish | Learn More | Programming | Contact Us |
|
You should be able to do most things with the interface in the imager. However, in some cases you might want to use the underlying capabilities of the imager package. Then it is necessary to understand how imager works. If you are not interested, please skip this section.
Imaging and self-calibration in the imager module is performed by distributed objects. There are five distributed objects. These are started when one makes an imager. One then sees the logger message:
imager: DO server for imager
The process called imager is the home of the distributed objects calibrater, imagemaker, imagesolver, weighter and flagger.
Brief descriptions of the distributed objects and examples follow:
flagger:=img.flagger(); flagger.initialize(flagger, 'MS'); flagger.setcriterion(flagger, 'ORFlag'); flagger.flag(flagger); flagger.countflags(flagger, count); flagger.write(flagger);
calibrater:=img.calibrater(); calibrater.initialize(calibrater, 'MS'); calibrater.set(calibrater, 'P', 30.0); calibrater.correct(calibrater); calibrater.write(calibrater);
imagemaker:=img.imagemaker(); imagemaker.initialize(imagemaker, 'MS') imagemaker.setcellsize(imagemaker, 0.7, 0.7); imagemaker.setimagesize(imagemaker, 128, 128); imagemaker.setnumberpolarizations(imagemaker, 4); imagemaker.setnumberchannels(imagemaker, 1); imagemaker.setshift(imagemaker, 0.0, 0.0); imagemaker.showstatus(imagemaker); imagemaker.write(imagemaker, '1000.image');
imagesolver:=img.imagesolver(); imagesolver.initialize(imagesolver, 'MS', '1000.image'); imagesolver.setfft(imagesolver); imagesolver.zero(imagesolver, T, T, T, T); imagesolver.showstatus(imagesolver); imagesolver.set(imagesolver, 'clean', 0.1, 1000, 0.010); imagesolver.solve(imagesolver); imagesolver.zero(imagesolver, F, T, T, T); imagesolver.setfluxmask(imagesolver, 'fluxmask'); imagesolver.setdatamask(imagesolver, 'datamask'); imagesolver.set(imagesolver, 'nnls', 1.0, 1000, 0.0000001); imagesolver.solve(imagesolver); imagesolver.restore(imagesolver, '1000.cleanimage', 2.5, 2.5, 0.0);
weighter.initialize(weighter, 'MS', '1000.image', 'uniform');
Documentation on the methods of the distributed objects is accessible via the above links.
A word about synchronizing the activities between the DOs and Glish: the DOs work by writing directly to and from disk files (i.e. MeasurementSets and Images). They do not connect to an MS loaded into Glish. Thus after doing processing in Glish, one should be sure to use updatems to update the MeasurementSet from Glish before initializing a DO with the MS. Similarly, one should write the MeasurementSet from a DO (using perhaps calibrater.write) before using the visset constructor.