AIPS++ Newsletter
August 2000
|
Table of Contents:
Mosaicing with Multi-Scale Clean
Virtual Images
AIPS++ at the WSRT
Glish and
the Qt widget library
Project News Summary
What's New
Bob Hjellming: Professional Remembrance
|
Mosaicing with Multi-Scale Clean in AIPS++
Mark Holdaway - NRAO/Tucson
Kumar Golap, Miller Goss, Tim Cornwell - NRAO/Socorro
AIPS++
is equipped with a wide array of deconvolution algorithms and
imaging contexts which make for a power imaging environment. In this
article, we show a new mosaic image of the relic radio galaxy 1401-33
generated from ATCA data with imager's Multi-Scale Clean algorithm.
Figure 1:
A mosaic image of the relic radio galaxy 1401-33 made
with imager's Multi-Field Multi-Scale Clean algorithm in
AIPS++.
Have you ever wondered why Clean attempts to break the sky down into a
series of delta functions? That assumption may have reflected our
view of the radio sky when Clean was invented in the 1970's, but it
doesn't match the images today's powerful radio telescopes produce.
Cleaning with delta functions results in notable artifacts when
imaging extended structure. The Non-Negative Least Squares (NNLS)
algorithm can get away from some of these artifacts by solving for all
pixels at once, but is restricted to small image sizes whose "A"
matrices fit into memory; furthermore, NNLS performance degrades as
the image sizes get bigger. So perhaps the maximum entropy method is
better at imaging broad emission on the sky? It is, but MEM has its
own flaw in its positivity bias. Maximum emptiness overcomes maximum
entropy's positivity bias, but still it has some problems with point
sources mixed with extended emission.
The new Multi-Scale Clean algorithm in AIPS++ overcomes many of these problems.
It simultaneously cleans delta functions and other larger components
sizes, so you can clean extended structure both efficiently and
without gross artifacts. Its ability to reproduce extended emission
surpasses maximum entropy's. It doesn't have a positive bias, so it
can image very noisy fields accurately. And now, its packaged in the
multi-field context as well as the single pointing interferometric
context, so you can use it for mosaicing, which is exactly what Goss
and Golap did (see Figure 1).
We all know about deconvolution algorithms -- they are basically solving
an inverse problem. In AIPS++, the imaging context refers
to the context of this inverse problem and determines
how the deconvolution algorithm is managed. For example, the
contexts which exist in AIPS++
include generic single-field interferometry, multi-field or mosaicing,
wide-field (ie, low frequency non-coplanar arrays), single-dish
on-the-fly, and holography. In principle, you can use most of the
deconvolution algorithms named above in each of the imaging contexts
enumerated here. Not all of these context/algorithm pairs are fully
implemented in AIPS++ yet, but the
essential structure is in place, and the interface will soon reflect
the algorithm/context abstraction.
The bottom line of the algorithm/context abstraction for this article
is that when you make a multi-field image in AIPS++, you can choose the algorithm you
wish to do the deconvolution. In the multi-field context, a "dirty
mosaic" and a single approximate point spread function are generated.
The dirty mosaic can be deconvolved with this approximate point spread
function with any standard deconvolution algorithm (Multi-Scale Clean,
for example), but not too deeply! When the deconvolution
proceeds to the point where differences between each fields' actual
point spread functions become important, the multi-field context stops
the deconvolution, an exact subtraction of the modeled emission (in
the Fourier plane, for example) is performed, and the next cycle of
deconvolution proceeds on the residuals. After several such multi-field
cycles, the model image is built up and the residuals are beat down.
For this nine field ATCA observation of 1401-33 at L-band, Goss and Golap
initially used the Clark Clean in a restricted region surrounding
the bright point source near the image center. The Clark Clean component
image was then used as a starting model, with the multi-field Multi-Scale
Clean algorithm working on the residuals. This worked well
in imaging both the very low brightness large scale structure and also
the other point sources in the image.
The Source 1401-33
The extended radio source 1401-33 appears to be a relic radio galaxy
with a steep spectrum (spectral index varies from -1.6 to -3.0 over
the structure). It is believed to be associated with a loose cluster
of galaxies and appears to have been a head tail radio galaxy. The
bright point source (at RA 14:03:38 and DEC -33:58.8) is identified
with the optical galaxy NGC 5419 and does not appear to be related to
the relic. In fact this is one of the mysteries of this source as it
does not have any obvious associated optical galaxy. Another
interesting fact is that it has lowest surface brightness of any radio
structure associated with a cluster environment. Collaborators on
the Australia Telescope Compact Array observations of 1401-33 are
R. Subrahmanyan, M. Goss, T. Beasley, R. W. Hunstead and K. Golap.
Look for more imaging innovations in the next release of
AIPS++.
The details of how the multi-field cycles are controlled in the
imager tool can be found in the multi-field chapter of
Getting Results.
|
Table of Contents:
Mosaicing with Multi-Scale Clean
Virtual Images
AIPS++ at the WSRT
Glish and
the Qt widget library
Project News Summary
What's New
Bob Hjellming: Professional Remembrance
|
Virtual Images in AIPS++
Neil Killeen - ATNF
The Image tool is the basic AIPS++
tool with which you manipulate images.
It has a capability unique to AIPS++; the ability to create
virtual images. ``Unique but not very handy'', you are probably thinking
at this point...
Let me explain what I mean by a virtual image. The word virtual
is used in a generic sense and there are a few different sorts
of specific virtual images; temporary, reference, expression,
and concatenation.
Temporary Images
We are all used to an image being stored persistently in a disk file.
But that's not the only way an image could be stored. For example, it
could be transiently stored in the computers memory. Of course, when
you access a traditional disk-based image, the data is transferred to
the computers memory for processing. But what I mean here is that the
entire image transiently resides in the computer's memory (not just its
pixels), but the way that you interact with it is just as if it was a
disk-based image.
The following glish fragments show an example of this.
include 'image.g'
#
im1 := shapetoimage(outfile='z1', shape=[10,10])
im1.summary()
im1.stats()
im1.done()
#
im2 := shapetoimage(shape=[10,10])
im2.summary()
im2.stats()
im2.done()
The Image tool im1 is constructed from a shape and is
associated with the disk file z1. It is just a little 10 by 10
image initialized to 0. The two subsequent commands summarize the image
(coordinates, shape etc.) and evaluate some statistics (not very interesting
since its all 0). Now, the Image tool im2 is constructed
similarly, except I left out the argument outfile. This Image
tool is associated with a memory-based, instead of a disk-based image.
Now in fact, im2 is actually what we call a ``temporary image''.
Depending on its size, and the resources of your computer, it will be
either in memory or on disk. Because the image I made above was so tiny
I knew it would be in memory. But the point is, it doesn't matter. It
behaves like other images, you interact with it via all the usual Image
tool functions. The only differences with the disk-based persistent
images are that 1) when you exit glish, the temporary image is deleted
(either from memory or disk) and 2) when you call the done
function (which destroys the Image tool), the disk file z1
remains behind, whereas the temporary image is destroyed.
The temporary image is one kind of ``virtual'' image. It's handy
simply because you don't have the extra book-keeping of looking
after the disk-based image. You use it when you want a transient
image.
Reference Images
A second kind of virtual image is one that references another.
include 'image.g'
include 'regionmanager.g'
#
im1 := shapetoimage(outfile='z1', shape=[10,10])
r := drm.quarter()
im2 := im1.subimage(outfile='z2', region=r)
im3 := im1.subimage(region=r)
Here we have three Image tools. im1 is associated with the disk
file z1. The second is associated with the disk file z2;
it is a copy of the central quarter (by area) of the disk file
z1. The third is a virtual image (because I left out the
outfile argument. It is a ``reference image'' because it actually
references the original file z1. When you access the pixel
values of Image tool im3, you are really accessing Image tool
im1 and hence disk file z1. Note that if you attempted to
delete the disk file z1 via the command
im1.delete(T)
you would find this would fail. This is because the system
knows that somebody else tool im3) has referenced
this image. The same would be true if you attempted
im3.delete(T)
The way to delete this file is to first disassociate the reference
image from z1. Thus
im3.done()
im1.delete()
The reference image is useful because it conserves resources
and I/O operations - when we made im2 the pixels
were physically copied to z2.
Now, we can take this a step further. Consider
include 'image.g'
include 'regionmanager.g'
#
im1 := shapetoimage(shape=[10,10])
r := drm.quarter()
im2 := im1.subimage(region=r)
im3 := im2.subimage('z3')
In this example, the Image tool im1 is a temporary image (and
in memory in this case). The Image tool im2 is a reference
image referencing the temporary (in memory) image ! So we have
both eliminated book-keeping and minimized resources.
If at any point you decode that you really do want your virtual
image to be disk-based, you can always copy it there with the
Image toolfunction subimage as shown for im3.
Expression Images
Within AIPS++ there exists something called the Lattice Expression
Language (or LEL). You can read all about it in the Image tool
documentation and in AIPS++
note 223 (user oriented) and
note 216
(design and implementation description for hard-core C++ enthusiasts.
LEL allows you to create mathematical expressions of Lattices
(images are just lattices of pixels with coordinate information).
This ability is available to the C++ programmer, as well
as to the glish user (the latter is implemented with the former
of course) via an Image tool. Here are two examples:
include 'image.g'
#
im1 := calc(outfile='z1', expr='z2+ (z3+min(z2))')
im2 := calc(expr='z2 + (z3+min(z2))')
The expression takes two images existing on disk called
z2 and z3 and evaluates, pixel by pixel,
a simple expression. It finds the minimum of image
z2, adds that to z3 (logically, not actually)
and then adds that result to the image z2.
Now the Image tool im1 is constructed and associated with
the disk file z1 - the result of the expression
is used to fill that image. However, the Image tool
im2 is another virtual image. It's an ``expression
image''. Again this was done by leaving out the
argument outfile. The expression image
is evaluated every time it is used. So if you
attempted to access some pixels:
p := im2.getchunk()
the expression involving the images would be evaluated and the result
returned to you. If you issued the same command again, the same thing
would happen (there is no caching at this level). This kind
of virtual image can be useful again to conserve resources.
Now the ``expression image'' clearly also references other image disk
files; in this case z2 and z3. And indeed you
will be unable to delete while they are so referenced. An expression
virtual image is really just another sort of reference virtual image,
but sufficiently different I put it in another category.
Of course, you can make expression images from other virtual images:
include 'image.g'
#
im1 := shapetoimage(shape=[20,30])
im2 := calc(expr='2*$im1')
im1.set(1)
im2.stats()
Here we make a temporary image. Then, using the $ substitution syntax
of LEL we make an expression image which just multiplies im1 by
2. We then set the value of all the pixels in the temporary image to 1.
If we then run the statistics function on the expression image, we would
see all the pixels have the value 2.
Note that the expression virtual image is read-only; it makes no
sense for it to be writable.
Concatenation Images
Our final type of virtual image is the ``concatenation image''. This is
another type of reference virtual image. There is a constructor that
enables you to concatenate images along a specified axis. Viz:
include 'image.g'
#
im1 := concat(outfile='z1', infiles="z2 z3 z4", axis=1)
im2 := concat(infiles="z2 z3 z4", axis=1)
Image tool im1 concatenates the specified images along axis 1
and writes the resultant to disk file z2.
Image tool im2 also concatenates the specified images along axis 1.
However, it does not write the result out to disk. Whenever you
access the pixels of im2, it goes back to the original images
and fetches the data from them. This may save you a lot of disk space
at some small access speed decrement. As usual, you can't delete the
referenced images whilst the concatenation images is in existence.
Connection with Object Oriented Design
This facility to create various types of images is intimately related
to Object Oriented Design. There is a C++ class called
ImageInterface. It defines the interface for Image objects. From
ImageInterface we derive various different classes whose behaviour is
different but still conforms to the ImageInterface definition. This
is what is going on here behind the scenes. The class TempImage
handles temporary virtual images. We have the class SubImage defining
reference virtual images. The class ImageExpr defines expression
virtual images and so on. ImageConcat handles concatenation images.
This is what gives us our ability to provide these different flavours
of image.
Summary
There are four different types of virtual image: temporary, reference,
expression and concatenation. These are generated by leaving the
outfile argument unspecified.
It is also worth noting that the temporary, reference and concatenation
virtual images are all writable. For example, if you attempted to
change the values of some pixels in a concatenation image (with function
putchunk), it would actually change the values in the underlying
images from which it was constructed. Only the expression images is not
writable.
|
Table of Contents:
Mosaicing with Multi-Scale Clean
Virtual Images
AIPS++ at the WSRT
Glish and
the Qt widget library
Project News Summary
What's New
Bob Hjellming: Professional Remembrance
|
The Use of AIPS++ at the WSRT
Jan Noordam, Ger van Diepen, and Tom Oosterloo - NFRA
One of the strengths of AIPS++ is
that it also offers a very powerful software infrastructure and
environment for implementing instrument specific software and
pipelines. The broad functionality of the C++ classes, combined with
the features of Glish, allow to integrate software for very specific
situations with the reduction and calibration capabilities of
'standard' AIPS++.
AIPS++ parts have been playing an
important part in the newly upgraded WSRT for a considerable time.
The role of AIPS++ in the operation
of the WSRT will increase in the next few years. Figure 2 gives an
overview:
-
AIPS++ modules used by TMS.
These include the Table module (which is the basis of the AIPS++ Measurement Set and various
other TMS data structures), the Measures module for coordinate
transformations, and Glish.
-
Various uv-data converters. The data produced by the WSRT is
written in the AIPS++ Measurement
Set format. For archiving, and for transferring WSRT uv-data to
other reduction packages like NEWSTAR, `classic' AIPS, MIRIAD,
DIFMAP, IWOS and MATLAB (used by Delft University for their research
into RFI detection and suppression), a number of format converters
are available. These are all part of
AIPS++.
-
WSRT local mini-package. This is currently used for data
inspection, and the reduction of calibrator observations for setting up the
instrument. It has been written in Glish, but makes use of existing C++
objects. Eventually, most of its functions will be taken over by functions
of the main AIPS++ package.
At this moment, AIPS++ is not yet
used very much for astronomical reduction of WSRT data. This is
expected to increase gradually now that the second release is out,
and as more of the basic uv-data processing functions become
available (the initial strength of
AIPS++ is in new imaging functions which
are not in existing packages). In the meantime, the various uv-data
converters will play an important role.
In the near future, a `data-inspection and calibration pipeline' will
be built in a collaboration between NFRA and the Australia Telescope
National Facility. In the near future, in particular with the IVC, the
data rate of the WSRT will be so high that on-line automatic data
inspection and quality control becomes necessary. This pipeline will
combine the functionality of AIPS++
with locally developed modules.
NFRA will continue to contribute to AIPS++
in various ways, but the
emphasis will gradually shift towards the LOFAR and SKA projects.
Figure 2:
Overview of the current use of AIPS++
at the upgraded WSRT.
|
Table of Contents:
Mosaicing with Multi-Scale Clean
Virtual Images
AIPS++ at the WSRT
Glish and
the Qt widget library
Project News Summary
What's New
Bob Hjellming: Professional Remembrance
|
Glish and the widget library
Tony Willis - DRAO
The ACSIS correlator project has as its goal the processing and analysis
of spectrometer data in real or near-real time. In order to make this goal
a practical reality we must be able to display both spectrometer data and
telescope data as they are collected so that an observer can quickly decide if
the incoming data is of acceptable quality.
Tests quickly revealed that the glish (and pgplot) interpreter
provided with AIPS++ consumed too
large a fraction of CPU resources while trying to keep up with the
ACSIS data rate of up to 10 Mb / sec. Developing a c++ based glish
client that made direct calls to pgplot improved things a bit, but now
the client consumed CPU resources! So we had to find some other way of
producing a display capable of handling a high data rate, while not
consuming all the CPU resources on a machine. (Here, my remarks are
not meant to disparage either glish or pgplot. Neither package was
ever designed for high speed real-time displays.)
While net surfing during July 1999, I became aware of a
two-dimensional plotting package called qwt, one of whose demo
programs was a strip chart display similar to that required by ACSIS
for showing telescope data as a function of time. Some playing with
the qwt strip chart demo revealed that it could probably keep up with
the ACSIS data rate, but typically consumed only ten to twenty percent
of the CPU resources of a 450 MHz PII computer. So we decided to see
if qwt (developed by Josef Wilgen, jwlg@mail.desy.de) could be
successfully integrated with a glish c++ client.
Qwt uses the Qt widget library, which is copyrighted by Troll Tech AS
http://www.trolltech.com
a Norwegian company. Both Qt and qwt are
written in c++ and are free for non-commercial use. It proved quite
easy to integrate glish events with the Qt event handler by means of a
Qt class called QSocketNotifier. The whole process has been made
transparent to an AIPS++ programmer
by means of a class called QtGlishSysEventSource, which inherits from
both the Qt QObject class and the AIPS++ GlishSysEventSource class. The
code for this class has been checked into the
AIPS++ development system in directory
/aips++/code/hia/implement/QtGlishEvent. Unfortunately the
documentation for the class is rather sparse, something this note
attempts to rectify.
The following c++ code sample demonstrates how a widget based on qwt
and Qt that we have developed for ACSIS to display spectra can be
integrated into a glish c++ client. Every time this client is sent a
glish 'update_display' event, containing a beam number and a spectrum,
the glish callback function 'update_plots' decodes the data associated
with the glish event and forwards the spectrum to the screen display
based on Qt/qwt.
/****************************************************************
**
** Main Program for ACSIS Qt spectrum plotting program
**
****************************************************************/
#include < math.h >
#include < aips/Arrays/Vector.h >
#include < aips/Arrays/IPosition.h >
#include < aips/Glish/GlishRecord.h >
#include < aips/Glish/GlishArray.h >
#include < aips/Glish/GlishValue.h >
#include < qapplication.h >
#include < qpushbutton.h >
#include < qscrollbar.h >
#include < qlcdnumber.h >
#include < qlayout.h >
#include < qfont.h >
// header file for the class Mainplt: a Qt / qwt plotter for ACSIS spectra
#include
// header file for the class QtGlishSysEventSource that combines glish
// and Qt event handling
#include
Bool First = True;
QtGlishSysEventSource *glishStream = 0;
Mainplt *plotter = 0;
// standard glish callback function
Bool update_plots(GlishSysEvent &e, void *)
{
// Extract data (beam number and spectrum) from incoming glish record
GlishRecord glishRec = e.val();
Int beam_no;
if (glishRec.exists("beam_no")) {
GlishArray tmp;
tmp = glishRec.get("beam_no");
tmp.get(beam_no);
}
Vector spectrum;
if (glishRec.exists("rtd_spectrum")) {
GlishArray tmp;
tmp = glishRec.get("rtd_spectrum");
tmp.get(spectrum);
}
// If this is the first spectrum, construct the plotter widget,
// from an ACSIS class imaginatively called Mainplt.
// The Mainplt class makes use of Qt and qwt classes.
// Note that the 'glishStream' pointer is passed into the Mainplt
// constructor. This makes it possible for glish events to be issued from
// A Qt callback function in the Mainplt widget.
if (First) {
Int spec_size = spectrum.nelements();
plotter = new Mainplt(glishStream, spec_size,0, "mainwin" );
// get the plotter widget up on the screen
(*plotter).show();
First = False;
}
// show the spectrum on the plotter display
(*plotter).updateEvent(beam_no,spectrum);
return True;
}
int main( int argc, char **argv )
{
// every Qt application requires exactly one object of class
// QApplication. This object is responsible for all event
// handling.
QApplication a( argc, argv );
// get a QApplication to also handle glish events
// by means of a QtGlishSysEventSource object. The
// QtGlishSysEventSource class inherits from both
// the QObject and the GlishSysEventSource classes.
glishStream = new QtGlishSysEventSource (argc, argv);
// define callback response to glish 'update_display' event
(*glishStream).addTarget(update_plots, "update_display");
// enter Qt event loop
return a.exec();
}
The important thing to note from the 'main' function above, is that
its structure looks quite similar to a standard glish c++ client, except
that events are handled by the Qt event loop and 'glishStream' points
to a member of the class 'QtGlishSysEventSource'.
A sample display of the ACSIS spectrum display in action is shown
in Figure 3.
Figure 3: Click on figire for higher resolution.
ACSIS spectrum display showing pseudo spectra
from a 16 feed focal plane array being sent to the screen every
50 millisec. The various buttons / sliders etc shown on the display
are from the Qt widget set. The Qwt package is used to generate the actual
plot.
So far AIPS++
GUIs have all been written as glish scripts by using the
Tk widget set that has been incorporated into glish by Darrell
Schiebel. If the AIPS++
project ever does decide to use a widget set
directly inside a glish c++ client I can certainly recommend the Qt
widget set. It is extremely easy for inexperienced GUI programmers,
but who have had exposure to c++, to learn to program with Qt. A
second year undergraduate computer science student who had had two c++
courses, programmed large fractions of the ACSIS spectrum display in a
2.5 month work term. There is even an O'Reilly book on Qt,
"Programming with Qt", by Matthias Kalle Dalheimer (ISBN
1-56592-588-2). However, the documentation, including tutorials and
examples, that comes with the Qt distribution is so good that the book
is not really necessary for a good understanding of Qt. The original
version of qwt is available from the TrollTech ftp site
ftp.trolltech.com.
However qwt requires some patches to work with Qt
V2.0 and later. A patched version is available from
ftp.drao.nrc.ca in
directory pub/twillis as file qwt_2.tar.gz.
|
Table of Contents:
Mosaicing with Multi-Scale Clean
Virtual Images
AIPS++ at the WSRT
Glish and
the Qt widget library
Project News Summary
What's New
Bob Hjellming: Professional Remembrance
|
Project News Summary
Tim Cornwell - NRAO, Socorro
On March 16, 2000, the Jodrell Bank Observatory officially rejoined
the AIPS++ consortium as a
partner. Jodrell Bank was one of the original founding partners in the
consortium but withdrew in 1995. We are very pleased to welcome
JBO/MERLIN back and look forward to working together.
In early May, we issued the second release, version 1.3, of AIPS++. This completes a 6 month
development cycle that started after the first release, version 1.2,
in October 1999. Our goal in this cycle has been towards scientific
completeness. Version 1.3 has numerous changes in most parts of the
package, but particularly in calibration and imaging of synthesis
data, image manipulation and viewing. In addition, many new tools,
such as a general purpose fitter, have been provided. A fuller
description of the changes is found in the release notes and
development report for version 1.3. We have now started on the
development of version 1.4 which we intend to release in October
2000. Our goal in version 1.4 is to complete the provision of
reduction capabilities for both connected element interferometers and
single dish radio telescopes, with special emphasis being paid to
improving the usability of these parts of the package. Planning for
version 1.4 was aided by a gathering of consortium developers in
Socorro on April 26 - April 29, 2000. Our intention is that such
face-to-face developers' meetings will occur every other development
cycle.
In January 2000, we hosted in Socorro a meeting on "Pipeline reduction
in AIPS++". This was a small informal workshop on the development
of pipelined calibration and imaging systems for radio telescopes.
Representatives of both consortium and non-consortium telescopes
attended, and gave presentations on the experience of and needs
for pipelines. We achieved a highly satisfactory degree of
convergence of views during this short workshop, and internally
we have proceeded to coordinate work on pipelines at the various
consortium sites. It is clear that the tool-based approach used
in AIPS++
is highly suited to the development of pipelines
tuned to the needs of different telescopes and scientific
questions.
In Personnel News:
- Barry Maguire joined the JBO/MERLIN and their AIPS++ group. To fulfil the contribution
of JBO/MERLIN to the AIPS++
Project, Barry will participate in the development of synthesis VLBI
capabilities within the package. As part of learning the package,
Barry visited both Dwingeloo and Socorro. Since he started with a firm
background in C++, he was able to make very rapid progress. He is
currently developing a filler for MERLIN data, and will then turn to
more general synthesis development.
- The AIPS++ Project at NRAO
hired Toney Minter and David King into the NRAO/AIPS++ visualization project, and hired
George Moellenbrock to work in synthesis development in Socorro
(replacing Peter Barnes who left at the end of 1999).
- Kate Weatherall left the NRAO AIPS++ group in February 2000 as part of
a budget-mandated reduction in force throughout the Observatory. We
all enjoyed working with Kate and will miss her.
- David Barnes has left the ATNF/Epping
AIPS++ group and has returned to
his home town, Melbourne, to work at the Swinburne Computer Center.
He will remain at work half time on AIPS++ until September. David has made
tremendous contributions in the development of the Display Library in
AIPS++, and to the general
package. We'll miss him a lot, and hope that he will find a way to
keep in touch in the future.
- Doug Roberts of NCSA has left to join the Hayden Planetarium
in Chicago. Doug has made significant contributions to many areas
but particularly in the parallelization effort. Doug had contributed
for a number of years, and we are sad to see him go. He will be replaced
as NCSA AIPS++
manager by Ray Plante. His work on parallelization
will be picked up by Dave Mehringer.
- Oleg Smirnov has joined the AIPS++ group in Dwingeloo, where he will
be working on general synthesis development.
Finally, on a personal note, on May 1 2000, I took on an additional
role at NRAO: Associate Director for Data Management. In this new
position, I am responsible for data management for all NRAO
telescopes. I expect AIPS++ to play
a key role in this effort, and will continue as AIPS++ Project Manager. The one drawback
of these new responsibilities is that I will have less time for
development in the package, which is something that I find very
enjoyable and rewarding. However, I look forward to being able to use
AIPS++ as a resource in this new
and demanding initiative at the NRAO.
|
Table of Contents:
Mosaicing with Multi-Scale Clean
Virtual Images
AIPS++ at the WSRT
Glish and
the Qt widget library
Project News Summary
What's New
Bob Hjellming: Professional Remembrance
|
What's New: April - July 2000
Athol Kemball - NRAO, Socorro
-
In this period the table system infrastructure has been improved in
several key areas, including enhancements in storing measures
and quanta in AIPS++
tables, and in improvements to the Table Query Language (TAQL). TAQL
can now be used on any memory-based data structure, rather than only
disk-based tables. A GUI widget has also been added to help users form
TAQL selection strings, using a query-by-example idiom. It includes
advanced features to allow more complex query commands.
-
Several new capabilities have been added in the image module,
including functions to: i) perform an FFT on an image; ii) regrid an
image to a specified template; iii) modify an image by a source
component model; and, iv) support reading of Miriad and GIPSY format
images. Additional and more uniform support has been added for virtual
images within the image module as a whole, as described elsewhere in
the newsletter.
-
A new tool, imagepol.g, has been added to provide the capability for
basic polarimetric image analysis. The imagefitter tool has been
extended to support the fitting of multiple, simultaneous components,
correct handling of Gaussian components in non-linear coordinate
systems, and better handling of units such as Jy/beam and Jy/pixel.
-
Mosaicing support has been expanded in imager, by adding new utility
functions, specialized mosaic weighting and in a broader range of deconvolution
algorithm support in different imaging contexts. The simulator has
been improved in its general capabilities, and in the range of
supported error models.
-
Improvements have continued in the user interface and toolmanager, but
substantial design changes are not planned until a larger user group
has had the opportunity to use the system in its current form.
-
A 64-bit build has been implemented on the SGI IRIX systems to allow
full use of the large memory model for the most computationally
challenging projects.
-
Work has continued in the calibrater tool, primarily in the area of
testing with a range of real data. Specialized test scripts for BIMA
data have also been developed.
-
Single-dish work in dish continues, as well as in GBT commissioning
support. New features have been added to the GBT filler in particular.
-
The infrastructure of the display library module has been expanded, as
has the viewer application.
|
Table of Contents:
Mosaicing with Multi-Scale Clean
Virtual Images
AIPS++ at the WSRT
Glish and
the Qt widget library
Project News Summary
What's New
Bob Hjellming: Professional Remembrance
|
Bob Hjellming: A Professional Remembrance
Tim Cornwell - NRAO, Socorro
Bob Hjellming, a scientist at NRAO Socorro, died of natural causes while
scuba diving on July 29, 2000. Bob had been a member of the NRAO Basic
Research staff since 1968. Bob came to the Observatory as a theoretician
studying H II regions and shortly thereafter recognized the opportunity to
detect radio emission from stars, a field he and Cam Wade pioneered. For
the next 30 years he studied stellar emission at radio and X-ray
wavelengths.
Bob had many talents and interests, one of which was computing, and in
particular astronomical computing. He was a keen fan of the computer
languages of Niklaus Wirth, particularly Oberon, and had an ongoing
project to write astronomical utilities in Java. With this background, it
was natural he became associated with the AIPS++
Project. Prior to the
official start of the project, he was responsible for drawing up the
consortium-wide user specifications for AIPS++.
He then participated in
the first six months of intensive work in Charlottesville in early 1992.
During this period, he formed close friendships with a number of people
still in the project and became AIPS++'s
first Project Scientist, a
position he held until 1993. More recently, he was an early user of
AIPS++,
and produced the "micro-quasar" images seen on the cover of the
release 1.3 CDROM. He brought to all of these roles his own mixture of
strong scientific focus, keen interest in computing technology, and belief
in the importance of communication. Most recently he contributed to
AIPS++
by editing our newsletter since the first publication in February 1998. In
this role, he spanned the gap between scientists and computer
professionals, finding ways for both to talk to each other. We will miss
him.
Mark Holdaway
|
|