This class is a base class for generating moments from an image or a spectral data. More...
#include <MomentsBase.h>
Public Types | |
enum | MethodTypes { WINDOW, FIT, NMETHODS } |
The | |
enum | MomentTypes { AVERAGE, INTEGRATED, WEIGHTED_MEAN_COORDINATE, WEIGHTED_DISPERSION_COORDINATE, MEDIAN, MEDIAN_COORDINATE, STANDARD_DEVIATION, RMS, ABS_MEAN_DEVIATION, MAXIMUM, MAXIMUM_COORDINATE, MINIMUM, MINIMUM_COORDINATE, NMOMENTS, DEFAULT } |
This | |
Public Member Functions | |
virtual | ~MomentsBase () |
Destructor. | |
Bool | setMoments (const Vector< Int > &moments) |
Set the desired moments via an Int array. | |
virtual Bool | setMomentAxis (Int)=0 |
Set the moment axis (0 relative). | |
Bool | setWinFitMethod (const Vector< Int > &method) |
The method by which you compute the moments is specified by calling (or not calling) the setWinFitMethod and setSmoothMethod functions. | |
virtual Bool | setSmoothMethod (const Vector< Int > &, const Vector< Int > &, const Vector< Quantum< Double > > &)=0 |
This function invokes smoothing of the input image. | |
Bool | setSmoothMethod (const Vector< Int > &smoothAxes, const Vector< Int > &kernelTypes, const Vector< Double > &kernelWidths) |
void | setInExCludeRange (const Vector< T > &include, const Vector< T > &exclude) |
You may specify a pixel intensity range as either one for which all pixels in that range are included in the moment calculation, or one for which all pixels in that range are excluded from the moment calculations. | |
void | setSnr (const T &peakSNR, const T &stdDeviation) |
This function is used to help assess whether a spectrum along the moment axis is all noise or not. | |
Bool | setSmoothOutName (const String &smOut) |
This is the output file name for the smoothed image. | |
void | setVelocityType (MDoppler::Types type) |
Set Velocity type. | |
void | resetError () |
Reset argument error condition. | |
String | errorMessage () const |
Recover last error message. | |
virtual const CoordinateSystem & | coordinates ()=0 |
Get CoordinateSystem. | |
virtual IPosition | getShape () const =0 |
Bool | shouldConvertToVelocity () const |
Static Public Member Functions | |
static Vector< Int > | toMethodTypes (const String &methods) |
Helper function to convert a string containing a list of desired methods to the correct Vector<Int> required for the setWinFitMethod function. | |
Protected Member Functions | |
MomentsBase (LogIO &os, Bool overWriteOutput=False, Bool showProgress=True) | |
Constructor takes an image and a LogIO object for logging purposes. | |
void | _checkMethod () |
Check that the combination of methods that the user has requested is valid List a handy dandy table if not. | |
void | _setIncludeExclude (Vector< T > &range, Bool &noInclude, Bool &noExclude, const Vector< T > &include, const Vector< T > &exclude) |
Take the user's data inclusion and exclusion data ranges and generate the range and Booleans to say what sort it is. | |
Bool | _setOutThings (String &suffix, Unit &momentUnits, const Unit &imageUnits, const String &momentAxisUnits, const Int moment, Bool convertToVelocity) |
Set the output image suffixes and units. | |
CoordinateSystem | _makeOutputCoordinates (IPosition &outShape, const CoordinateSystem &cSysIn, const IPosition &inShape, Int momentAxis, Bool removeAxis) |
Make output Coordinates. | |
Protected Attributes | |
LogIO | os_p |
Bool | showProgress_p |
String | out_p |
Int | worldMomentAxis_p |
Bool | overWriteOutput_p |
Friends | |
class | MomentCalcBase< T > |
Note that if I don't put MomentCalcBase as a forward declaration and use instead "friend class MomentCalcBase<T>" The gnu compiler fails with a typedef problem. |
This class is a base class for generating moments from an image or a spectral data.
Public interface
This class is an abstract class to compute moments from images or spectral data.
The primary goal of MSMoments, ImageMoments, and MSMoments are to help spectral-line astronomers analyze their multi-dimensional images or spectral data (in the form of MeasurementSet) by generating moments of a specified axis. ImageMoments is a specialized class to generate moments from images, while MSMoments is designed properly for MeasurementSet input. MSMoments class is an abstract class that is inherited by the above two concrete classes. MomentsBase provides interface layer to the MomentCalculators so that functionalities in MomentCalculators can be shared with ImageMoments and MSMoments. The word "moment" is used loosely here. It refers to collapsing an axis to one pixel and putting the value of that pixel (for all of the other non-collapsed axes) to something computed from the data values along the moment axis. For example, take an RA-DEC-Velocity cube, collapse the velocity axis by computing the mean intensity at each RA-DEC pixel. This class and its inheritances offer many different moments and a variety of interactive and automatic ways to compute them.
MSMoments is defined so that moments can be generated from both images and spectral data (in the form of MeasurementSet).
Definition at line 92 of file MomentsBase.h.
enum casa::MomentsBase::MethodTypes |
The enum MethodTypes
is provided for use with the setWinFitMethod
function.
It gives the allowed moment methods which are available with this function. The use of these methods is described further with the description of this function as well as in the general documentation earlier.
Definition at line 107 of file MomentsBase.h.
enum casa::MomentsBase::MomentTypes |
This enum MomentTypes
is provided for use with the setMoments
function.
It gives the allowed moment types that you can ask for.
Definition at line 119 of file MomentsBase.h.
virtual casa::MomentsBase< T >::~MomentsBase | ( | ) | [virtual] |
Destructor.
casa::MomentsBase< T >::MomentsBase | ( | LogIO & | os, | |
Bool | overWriteOutput = False , |
|||
Bool | showProgress = True | |||
) | [protected] |
Constructor takes an image and a LogIO
object for logging purposes.
You specify whether output images are automatically overwritten if pre-existing, or whether an intercative choice dialog widget appears (overWriteOutput=F) You may also determine whether a progress meter is displayed or not.
void casa::MomentsBase< T >::_checkMethod | ( | ) | [protected] |
Check that the combination of methods that the user has requested is valid List a handy dandy table if not.
CoordinateSystem casa::MomentsBase< T >::_makeOutputCoordinates | ( | IPosition & | outShape, | |
const CoordinateSystem & | cSysIn, | |||
const IPosition & | inShape, | |||
Int | momentAxis, | |||
Bool | removeAxis | |||
) | [protected] |
Make output Coordinates.
void casa::MomentsBase< T >::_setIncludeExclude | ( | Vector< T > & | range, | |
Bool & | noInclude, | |||
Bool & | noExclude, | |||
const Vector< T > & | include, | |||
const Vector< T > & | exclude | |||
) | [protected] |
Take the user's data inclusion and exclusion data ranges and generate the range and Booleans to say what sort it is.
Bool casa::MomentsBase< T >::_setOutThings | ( | String & | suffix, | |
Unit & | momentUnits, | |||
const Unit & | imageUnits, | |||
const String & | momentAxisUnits, | |||
const Int | moment, | |||
Bool | convertToVelocity | |||
) | [protected] |
Set the output image suffixes and units.
virtual const CoordinateSystem& casa::MomentsBase< T >::coordinates | ( | ) | [pure virtual] |
Get CoordinateSystem.
Implemented in casa::ImageMoments< T >, and casa::ImageMoments< Float >.
String casa::MomentsBase< T >::errorMessage | ( | ) | const [inline] |
Recover last error message.
Definition at line 269 of file MomentsBase.h.
virtual IPosition casa::MomentsBase< T >::getShape | ( | ) | const [pure virtual] |
Implemented in casa::ImageMoments< T >, and casa::ImageMoments< Float >.
void casa::MomentsBase< T >::resetError | ( | ) | [inline] |
Reset argument error condition.
If you specify invalid arguments to one of the above functions, an internal flag will be set which will prevent the createMoments
function, which is defined in its inheritances, from doing anything (should you have chosen to igmore the Boolean return values of the functions). This function allows you to reset that internal state to good.
Definition at line 266 of file MomentsBase.h.
void casa::MomentsBase< T >::setInExCludeRange | ( | const Vector< T > & | include, | |
const Vector< T > & | exclude | |||
) |
You may specify a pixel intensity range as either one for which all pixels in that range are included in the moment calculation, or one for which all pixels in that range are excluded from the moment calculations.
One or the other of include
and exclude
must therefore be a zero length vector if you call this function. A return value of False
indicates that you have given both an include
and an exclude
range. If you don't call this function, the default state of the class is to include all pixels.
virtual Bool casa::MomentsBase< T >::setMomentAxis | ( | Int | ) | [pure virtual] |
Set the moment axis (0 relative).
A return value of False
indicates that the axis was not contained in the image. If you don't call this function, the default state of the class is to set the moment axis to the spectral axis if it can find one. Otherwise an error will result.
Implemented in casa::ImageMoments< T >, and casa::ImageMoments< Float >.
Bool casa::MomentsBase< T >::setMoments | ( | const Vector< Int > & | moments | ) |
Set the desired moments via an Int
array.
Each Int
specifies a different moment; the allowed values and their meanings are given by the enum MomentTypes
. A return value of False
indicates you asked for an out of range moment. If you don't call this function, the default state of the class is to request the integrated intensity.
Bool casa::MomentsBase< T >::setSmoothMethod | ( | const Vector< Int > & | smoothAxes, | |
const Vector< Int > & | kernelTypes, | |||
const Vector< Double > & | kernelWidths | |||
) |
Reimplemented in casa::ImageMoments< T >, and casa::ImageMoments< Float >.
virtual Bool casa::MomentsBase< T >::setSmoothMethod | ( | const Vector< Int > & | , | |
const Vector< Int > & | , | |||
const Vector< Quantum< Double > > & | ||||
) | [pure virtual] |
This function invokes smoothing of the input image.
Give Int
arrays for the axes (0 relative) to be smoothed and the smoothing kernel types (use the enum KernelTypes
) for each axis. Give a Double
array for the widths (full width for BOXCAR and full width at half maximum for GAUSSIAN) in pixels of the smoothing kernels for each axis. For HANNING smoothing, you always get the quarter-half-quarter kernel (no matter what you might ask for). A return value of False
indicates that you have given an inconsistent or invalid set of smoothing parameters. If you don't call this function the default state of the class is to do no smoothing. The kernel types are specified with the VectorKernel::KernelTypes enum
Implemented in casa::ImageMoments< T >, and casa::ImageMoments< Float >.
Bool casa::MomentsBase< T >::setSmoothOutName | ( | const String & | smOut | ) |
This is the output file name for the smoothed image.
It can be useful to have access this to this image when trying to get the pixel include
or exclude
range correct for the smooth-clip method. The default state of the class is to not output the smoothed image.
void casa::MomentsBase< T >::setSnr | ( | const T & | peakSNR, | |
const T & | stdDeviation | |||
) |
This function is used to help assess whether a spectrum along the moment axis is all noise or not.
If it is all noise, there is not a lot of point to trying to computing the moment. peakSNR
is the signal-to-noise ratio of the peak value in the spectrum below which the spectrum is considered pure noise. stdDeviation
is the standard deviation of the noise for the input image.
Default values for one or the other parameter are indicated by giving zero.
The default state of the class then is to set peakSNR=3
and/or to work out the noise level from a Gaussian fit to a histogram (above 25%) of the entire image (it is very hard to get an accurate estimate of the noise a single spectrum).
void casa::MomentsBase< T >::setVelocityType | ( | MDoppler::Types | type | ) |
Set Velocity type.
This is used for moments for which the moment axis is a spectral axis for which the coordinate is traditionally presented in km/s You can select the velocity definition. The default state of the class is to use the radio definition.
Bool casa::MomentsBase< T >::setWinFitMethod | ( | const Vector< Int > & | method | ) |
The method by which you compute the moments is specified by calling (or not calling) the setWinFitMethod
and setSmoothMethod
functions.
The default state of the class is to compute directly on all (or some according to setInExClude
) of the pixels in the spectrum. Calling these functions modifies the computational state to something more complicated.
The setWinMethod
function requires an Int
array as its argument. Each Int
specifies a different method that you can invoke (either separately or in combination). The allowed values and their meanings are given by the enum MethodTypes
.
Both the windowing and fitting methods have interactive modes. The windowing method also has a fitting flavour, so if you set both MomentsBase::WINDOW and MomentsBase::FIT, you would be invoking the windowing method but determining the window by fitting Gaussians automatically (as MomentsBase::INTERACTIVE) was not given.
If you don't call this function, then neither the windowing nor fitting methods are invoked. A return value of False
indicates that you asked for an illegal method.
Bool casa::MomentsBase< T >::shouldConvertToVelocity | ( | ) | const [inline] |
Definition at line 284 of file MomentsBase.h.
static Vector<Int> casa::MomentsBase< T >::toMethodTypes | ( | const String & | methods | ) | [static] |
Helper function to convert a string containing a list of desired methods to the correct Vector<Int>
required for the setWinFitMethod
function.
This may be usful if your user interface involves strings rather than integers. A new value is added to the output vector (which is resized appropriately) if any of the substrings "window", "fit" or "interactive" (actually "win", "box" and "inter" will do) is present.
friend class MomentCalcBase< T > [friend] |
Note that if I don't put MomentCalcBase as a forward declaration and use instead "friend class MomentCalcBase<T>" The gnu compiler fails with a typedef problem.
But I can't solve it with say typedef MomentCalcBase<T> gpp_type;
because you can only do a typedef with an actual type, not a T
!
Reimplemented in casa::ImageMoments< T >, and casa::ImageMoments< Float >.
Definition at line 100 of file MomentsBase.h.
LogIO casa::MomentsBase< T >::os_p [protected] |
Definition at line 297 of file MomentsBase.h.
String casa::MomentsBase< T >::out_p [protected] |
Definition at line 299 of file MomentsBase.h.
Bool casa::MomentsBase< T >::overWriteOutput_p [protected] |
Definition at line 316 of file MomentsBase.h.
Bool casa::MomentsBase< T >::showProgress_p [protected] |
Definition at line 298 of file MomentsBase.h.
Int casa::MomentsBase< T >::worldMomentAxis_p [protected] |
Definition at line 305 of file MomentsBase.h.
Referenced by casa::MomentCalcBase< T >::getMomentCoord().