Classes | |
| class | casa::ArrayLattice< T > |
| A memory resident Lattice. More... | |
| class | casa::CLIPNearest2D< T > |
| Arbitrarily shaped 1-dim lattice crosscut. More... | |
| class | casa::ExtendLattice< T > |
| An extension of a Lattice or MaskedLattice. More... | |
| class | casa::FITSMask |
| Provides an on-the-fly mask for FITS images. More... | |
| class | casa::HDF5Lattice< T > |
| A Lattice that is read from or written to an HDF5 dataset. More... | |
| class | casa::Lattice< T > |
| A templated, abstract base class for array-like objects. More... | |
| class | casa::LatticeAddNoise |
| Add noise from specified distribution to a lattice. More... | |
| class | casa::LatticeApply< T, U > |
| Optimally iterate through a Lattice and apply provided function object. More... | |
| class | casa::LatticeBase |
| A non-templated, abstract base class for array-like objects. More... | |
| class | casa::LatticeCache< T > |
| a class for caching image access via tiles More... | |
| class | casa::CleanEnums |
| Lists the different types of Convolutions that can be done. More... | |
| class | casa::LatticeCleaner< T > |
| A class for doing multi-dimensional cleaning. More... | |
| class | casa::LatticeCleanProgress |
| Abstract base class to monitor progress in lattice operations. More... | |
| class | casa::LatticeConcat< T > |
| Concatenates lattices along a specified axis. More... | |
| class | casa::ConvEnums |
| Lists the different types of Convolutions that can be done. More... | |
| class | casa::LatticeConvolver< T > |
| A class for doing multi-dimensional convolution. More... | |
| class | casa::LatticeExpr< T > |
| Class to allow C++ expressions involving lattices. More... | |
| class | casa::LatticeExprNode |
| Bridging class to allow C++ expressions involving lattices. More... | |
| class | casa::LatticeFFT |
| Functions for Fourier transforming Lattices. More... | |
| class | casa::LatticeHistograms< T > |
| Displays histograms of regions from a lattice. More... | |
| class | casa::HistTiledCollapser< T > |
| Generate histograms, tile by tile, from a masked lattice. More... | |
| class | casa::LatticeHistSpecialize |
| Specialized functions for LatticeHistograms. More... | |
| class | casa::RO_LatticeIterator< T > |
| A readonly iterator for Lattices. More... | |
| class | casa::LatticeIterator< T > |
| A read/write lattice iterator. More... | |
| class | casa::LatticeLocker |
| Class to hold a (user) lock on a lattice. More... | |
| class | casa::LatticeProgress |
| Abstract base class to monitor progress in lattice operations. More... | |
| class | casa::LatticeSlice1D< T > |
| Extract a 1-D slice from a Lattice. More... | |
| class | casa::LatticeStatistics< T > |
| Compute and display various statistics from a lattice. More... | |
| class | casa::StatsTiledCollapser< T, U > |
| Generate statistics, tile by tile, from a masked lattice. More... | |
| class | casa::LatticeStatsBase |
| Base class for LatticeStatistics class. More... | |
| class | casa::LatticeStepper |
| Traverse a Lattice by cursor shape. More... | |
| class | casa::LatticeTwoPtCorr< T > |
| Compute two point auto-correlation functions from a lattice. More... | |
| class | casa::LatticeUtilities |
| Static functions for Lattices. More... | |
| struct | casa::LatticeUtilities_global_functions_LatticeUtilities |
| Global functions on Lattices. More... | |
| class | casa::LattRegionHolder |
| Class to hold a region of interest in an image. More... | |
| class | casa::LattStatsSpecialize |
| class | casa::LCBox |
| Class to define a rectangular box of interest. More... | |
| class | casa::LCComplement |
| Make the complement of a region. More... | |
| class | casa::LCConcatenation |
| Combine multiple LCRegion's into a new dimension. More... | |
| class | casa::LCDifference |
| Make the difference of 2 regions. More... | |
| class | casa::LCEllipsoid |
| Define an N-dimensional ellipsoidal region of interest. More... | |
| class | casa::LCExtension |
| Extend an LCRegion along straight lines to other dimensions. More... | |
| class | casa::LCIntersection |
| Make the intersection of 2 or more regions. More... | |
| class | casa::LCLELMask |
| Class to define a mask as a LEL expression. More... | |
| class | casa::LCMask |
| Class to define a rectangular mask as a temporary region. More... | |
| class | casa::LCPagedMask |
| Class to define a rectangular mask as a region. More... | |
| class | casa::LCPixelSet |
| Class to define a rectangular mask as a region. More... | |
| class | casa::LCPolygon |
| Define a 2-dimensional region by a polygon. More... | |
| class | casa::LCRegion |
| Abstract base class to define a region of interest in lattice coordinates. More... | |
| class | casa::LCRegionFixed |
| Abstract base class to define a fixed region. More... | |
| class | casa::LCRegionMulti |
| Make the intersection of 2 or more regions. More... | |
| class | casa::LCRegionSingle |
| Abstract base class to define a single region. More... | |
| class | casa::LCSlicer |
| Class to define a rectangular box of interest with strides. More... | |
| class | casa::LCStretch |
| Stretch length 1 axes in an LCRegion along straight lines. More... | |
| class | casa::LCUnion |
| Make the union of 2 or more regions. More... | |
| class | casa::LELCoordinates |
| Envelope class to handle Lattice Coordinates in LEL. More... | |
| class | casa::LineCollapser< T, U > |
| Abstract base class for LatticeApply function signatures. More... | |
| class | casa::MaskedLattice< T > |
| A templated, abstract base class for array-like objects with masks. More... | |
| class | casa::RO_MaskedLatticeIterator< T > |
| A readonly iterator for masked Lattices. More... | |
| class | casa::PagedArray< T > |
| A Lattice that is read from or written to disk. More... | |
| class | casa::PixelCurve1D |
| Arbitrary 1-dim curve in a lattice plane. More... | |
| class | casa::RegionType |
| Define the various region types. More... | |
| class | casa::SubLattice< T > |
| A subset of a Lattice or MaskedLattice. More... | |
| class | casa::TempLattice< T > |
| A Lattice that can be used for temporary storage. More... | |
| class | casa::TiledCollapser< T, U > |
| Abstract base class to collapse chunks for LatticeApply. More... | |
| class | casa::TiledLineStepper |
| Step a Vector cursor optimally through a tiled Lattice. More... | |
| class | casa::TiledShape |
| Define the shape and tile shape. More... | |
| class | casa::TileStepper |
| traverse a tiled Lattice optimally with a tile cursor More... | |
Modules | |
| Lattices_module_internal_classes | |
| Internal Lattices_module classes and functions. | |
See below for an overview of the classes in this module.
Lattice: "A regular, periodic configuration of points, particles, or objects, throughout an area of a space..." (American Heritage Directory) This definition matches our own: an N-dimensional arrangement of data on regular orthogonal axes.
In AIPS++, we have used the ability to call many things by one generic name (Lattice) to create a number of classes which have different storage techniques (e.g. core memory, disk, etc...). The name Lattice should make the user think of a class interface (or member functions) which all Lattice objects have in common. If functions require a Lattice argument, the classes described here may be used interchangeably, even though their actual internal workings are very different.
The Lattice module may be broken up into a few areas:
// Make an Array of shape 3x4x5 Array<Float> simpleArray(IPosition(3,3,4,5)); // fill it with a gradient for (Int k=0; k<5; k++) for (Int j=0; j<4; j++) for (Int i=0; i<3; i++) simpleArray(IPosition(3,i,j,k)) = i+j+k; // use the array to create an ArrayLattice. ArrayLattice<Float> lattice(simpleArray);
// Create a PagedArray from a Table already existing on disk. PagedArray<Float> lattice(fileName); // Create a LatticeIterator to access the Lattice in optimal tile // shaped chunks. LatticeIterator<Float> iter(lattice); // Iterate through and do something simple; here we just // sum up all the values in the Lattice Float dSum = 0; for(iter.reset(); !iter.atEnd(); iter++) { dSum += sum(iter.cursor()); }
RO_LatticeIterator which should be used if you are not going to change the Lattice's data, and the LatticeIterator if you need to change the data in the Lattice. // simple route - define a cursor shape that is the xy plane of our lattice. IPosition cursorShape(2, lattice.shape()(0), lattice.shape()(1)); LatticeIterator<Float> iter(lattice, cursorShape); for (iter.reset(); !iter.atEnd(); iter++) { minMax(iter.cursor(), min, max); }
// make an empty PagedArray and fill it. The Table that stores the // PagedArray is deleted when the PagedArray goes out of scope PagedArray<Float> lattice(IPosition(4,100,200,300,50)); LatticeIterator<Float> iter(lattice, IPosition(2, 100, 200)); // fill each plane with the "distance" of the iterator from the origin for(iter.reset();!iter.atEnd(); iter++) { iter.woCursor() = iter.nsteps(); }
// The shape of our Lattice - a 4 dimensional image of shape (x,y,z,t) - // and the shape of the cursor IPosition latticeShape(image.shape()); IPosition cursorShape(3, lattticeShape(0), 1, latticeShape(2)); // Define the path the cursor should follow, we list x and z first, even though // no iterations will be done along those axes since the cursor is an // integral subshape of the Lattice. The cursor will move along the y-axis // and then increment the t-axis. The construct the Navigator and Iterator IPosition order(4,0,2,1,3); LatticeStepper nav(latticeShape, cursorShape, order); LatticeIterator<Float> iter(image, nav);
// Set up a TiledLineStepper to return profiles along the specified // axis from a PagedArray (not all Lattices have the tileShape member // function). Then create the iterator as well. TiledLineStepper nav(lattice.shape(), lattice.tileShape(), axis); LatticeIterator<Complex> nav(lattice, nav);
isMasked() tells if there is really a mask. If not, users could take advantage by shortcutting some code for better performance. I.e. a function can test if a the MaskedLattice is really masked and can take a special route if not. Of course, doing that requires more coding, so it should only be done where performance is a real issue. const Lattice, the SubLattice is not writable. Otherwise it is writable if the lattice is writable.
There is a rich variety of region classes which can be used to define a LatticeRegion in pixel coordinates. The elementary ones are box , ellipsoid , polygon , pixelset , and good/bad mask . Compound region classes can be used to make a union , intersection , difference , concatenation , complement , or extension from one or more regions.
Apart from these region classes, class LCSlicer can be used to define a box with optional strides. It also offers the opportunity to define the box in fractions or to define it relative to the center of the lattice or relative to a reference pixel.
The final, and most general way, to define regions is by means of the world coordinates region classes in the Images module, in particular the WCRegion class. However, world coordinate regions can only be used with images.
When the expression consists of images, the result can also be treated as an image using class ImageExpr . With the command function in ImageExprParse it is possible to parse and execute a LEL expression given as as a string.
Warning: The following are listed for low-level programmers; Lattice users need not understand them;
The Lattice directory contains several files relevant only to implementation.
Lattices allow the various holders of data to assume a general method of treatment; by making interfaces in terms of the Lattice class, the programmer can polymorphically operate on objects derived from the Lattice class.
1.5.7