casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
casa::ImagePolTask Class Reference

Begin moving polarization tasks to ImageTask framework. More...

#include <ImagePolTask.h>

Inheritance diagram for casa::ImagePolTask:
casa::ImageTask< casacore::Float > casa::ImageTotalPolarization casa::LinearPolarizationAngleCalculator casa::LinearPolarizationCalculator

Public Types

enum  StokesTypes {
  I,
  Q,
  U,
  V
}
 
- Public Types inherited from casa::ImageTask< casacore::Float >
enum  Verbosity
 Virtual base class for image analysis tasks. More...
 

Public Member Functions

 ImagePolTask ()=delete
 
virtual ~ImagePolTask ()
 
virtual casacore::String getClass () const
 
casacore::ImageExpr
< casacore::Float
linPolInt (casacore::Bool debias, casacore::Float clip=10.0, casacore::Float sigma=-1.0)
 
*casacore::Float sigmaLinPolInt (casacore::Float clip=10.0, casacore::Float sigma=-1.0)
 
- Public Member Functions inherited from casa::ImageTask< casacore::Float >
virtual ~ImageTask ()
 
void setStretch (const casacore::Bool stretch)
 
void setLogfile (const casacore::String &lf)
 tacitly does nothing if lf is the empty string. More...
 
void setLogfileAppend (const casacore::Bool a)
 
void setRegion (const casacore::Record &region)
 
void setMask (const casacore::String &mask)
 
void setVerbosity (Verbosity verbosity)
 
void addHistory (const std::vector< std::pair< casacore::String, casacore::String > > &msgs) const
 These messages will appear in the product image history upon the call to _prepareOutputImage(). More...
 
void addHistory (const casacore::LogOrigin &origin, const casacore::String &msg) const
 
void addHistory (const casacore::LogOrigin &origin, const std::vector< casacore::String > &msgs) const
 
void addHistory (const casacore::LogOrigin &origin, const casacore::String &taskname, const std::vector< casacore::String > &paramNames, const std::vector< casac::variant > &paramValues) const
 This adds standard history messages regarding the task that was run and input parameters used. More...
 
void suppressHistoryWriting (casacore::Bool b)
 suppress writing the history on _prepareOutputImage() call. More...
 
std::vector< std::pair
< casacore::String,
casacore::String > > 
getHistory ()
 get the history associated with the task. More...
 
void setDropDegen (casacore::Bool d)
 

Protected Member Functions

 ImagePolTask (const SPCIIF image, const casacore::String &outname, casacore::Bool overwrite)
 
casacore::Bool _checkQUBeams (casacore::Bool requireChannelEquality, casacore::Bool throws=casacore::True) const
 
void _fiddleStokesCoordinate (casacore::ImageInterface< casacore::Float > &ie, casacore::Stokes::StokesTypes type) const
 Change the casacore::Stokes casacore::Coordinate for the given complex image to be of the specified casacore::Stokes type. More...
 
std::vector
< casacore::Coordinate::Type
_getNecessaryCoordinates () const
 Represents the minimum set of coordinates necessary for the task to function. More...
 
CasacRegionManager::StokesControl _getStokesControl () const
 
SPCIIF _getStokesImage (StokesTypes type) const
 
casacore::LatticeExprNode _makePolIntNode (casacore::Bool debias, casacore::Float clip, casacore::Float sigma, casacore::Bool doLin, casacore::Bool doCirc)
 Make a LEN for the give types of polarized intensity. More...
 
void _maskAndZeroNaNs (SPIIF out)
 
void _setDoLinDoCirc (casacore::Bool &doLin, casacore::Bool &doCirc, casacore::Bool requireI) const
 
void _setInfo (casacore::ImageInterface< Float > &im, const StokesTypes stokes) const
 
- Protected Member Functions inherited from casa::ImageTask< casacore::Float >
 ImageTask (const SPCIIT image, const casacore::String &region, const casacore::Record *const &regionPtr, const casacore::String &box, const casacore::String &chanInp, const casacore::String &stokes, const casacore::String &maskInp, const casacore::String &outname, casacore::Bool overwrite)
 if outname is empty, no image will be written if overwrite is True, if image already exists it will be removed if overwrite is False, if image already exists exception will be thrown More...
 
 ImageTask (const SPCIIT image, const casacore::Record *const &regionPtr, const casacore::String &mask, const casacore::String &outname, casacore::Bool overwrite)
 
virtual std::vector
< OutputDestinationChecker::OutputStruct
_getOutputStruct ()
 
virtual void _construct (casacore::Bool verbose=true)
 does the lion's share of constructing the object, ie checks validity of inputs, etc. More...
 
const SPCIIT _getImage () const
 
const casacore::String_getMask () const
 
const casacore::Record_getRegion () const
 
void _setStokes (const casacore::String &stokes)
 
const casacore::String_getStokes () const
 
const casacore::String_getChans () const
 
const casacore::String_getOutname () const
 
casacore::Bool _isPVImage () const
 Is the attached image a position-velocity (PV) image? More...
 
void _removeExistingOutfileIfNecessary () const
 
void _removeExistingFileIfNecessary (const casacore::String &filename, const casacore::Bool overwrite, casacore::Bool warnOnly=false) const
 if warnOnly is true, log a warning message if file exists and overwrite is true, else throw an exception. More...
 
casacore::String _summaryHeader () const
 
const std::shared_ptr
< casacore::LogIO
_getLog () const
 
virtual casacore::Bool _hasLogfileSupport () const
 by default, derived classes are configured to have no log file support. More...
 
casacore::Bool _getStretch () const
 
Bool _getSuppressHistory () const
 
const std::shared_ptr< LogFile_getLogFile () const
 
casacore::Bool _writeLogfile (const casacore::String &output, const casacore::Bool open=true, const casacore::Bool close=true)
 
casacore::Bool _openLogfile ()
 
void _closeLogfile () const
 
virtual casacore::Bool _supportsMultipleRegions () const
 
virtual casacore::Bool _supportsMultipleBeams () const
 does this task support images with multiple beams? false means it never does. More...
 
SPIIT _prepareOutputImage (const casacore::ImageInterface< casacore::Float > &image, const casacore::Array< casacore::Float > *const values, const casacore::ArrayLattice< casacore::Bool > *const mask=nullptr, const casacore::IPosition *const outShape=nullptr, const casacore::CoordinateSystem *const coordsys=nullptr, const casacore::String *const outname=nullptr, casacore::Bool overwrite=false, casacore::Bool dropDegen=false) const
 If outname != NULL, use the value supplied. More...
 
SPIIT _prepareOutputImage (const casacore::ImageInterface< casacore::Float > &image, casacore::Bool dropDegen=false) const
 
SPIIT _prepareOutputImage (const casacore::ImageInterface< casacore::Float > &image, const casacore::String &outname, casacore::Bool overwrite, casacore::Bool warnOnly) const
 if warnOnly is true, only log a warning message if the file exists and overwrite is true, else throw an excepction More...
 
SPIIT _prepareOutputImage (const casacore::ImageInterface< casacore::Float > &image, const casacore::Lattice< casacore::Float > &data) const
 data are copied to the output image from the data lattice. More...
 
Verbosity _getVerbosity () const
 
casacore::Bool _getOverwrite () const
 
virtual casacore::Bool _mustHaveSquareDirectionPixels () const
 
casacore::Bool _getDropDegen () const
 
void _doHistory (std::shared_ptr< casacore::ImageInterface< U >> &image) const
 
void _reportOldNewImageShapes (const ImageInterface< casacore::Float > &out) const
 
void _reportOldNewImageShapes (const IPosition &outShape) const
 

Private Member Functions

casacore::Bool _checkBeams (const std::vector< StokesTypes > &stokes, casacore::Bool requireChannelEquality, casacore::Bool throws=true) const
 
casacore::Bool _checkIQUBeams (casacore::Bool requireChannelEquality, casacore::Bool throws=casacore::True) const
 
casacore::Bool _checkIVBeams (casacore::Bool requireChannelEquality, casacore::Bool throws=casacore::True) const
 
void _createBeamsEqMat ()
 
void _findStokes ()
 Find the casacore::Stokes in the construction image and assign pointers. More...
 
void _fiddleStokesCoordinate (casacore::CoordinateSystem &cSys, casacore::Stokes::StokesTypes type) const
 
SPIIF _makeSubImage (casacore::IPosition &blc, casacore::IPosition &trc, casacore::Int axis, casacore::Int pix) const
 Make a casacore::SubImage from the construction image for the specified pixel along the specified pixel axis. More...
 
casacore::Float _sigma (casacore::Float clip=10.0)
 Get the best estimate of the statistical noise. More...
 
casacore::Float _sigma (StokesTypes index, casacore::Float clip)
 Find the standard deviation for the casacore::Stokes image specified by the integer index. More...
 
casacore::String _stokesName (StokesTypes index) const
 Return I, Q, U or V for specified integer index (0-3) More...
 

Private Attributes

std::vector< SPIIF_stokesImage
 These blocks are always size 4, with IQUV in slots 0,1,2,3 If your image is IV only, they still use slots 0 and 3. More...
 
std::vector< std::shared_ptr
< casacore::LatticeStatistics
< casacore::Float > > > 
_stokesStats
 
casacore::Matrix< casacore::Bool_beamsEqMat
 
Float _oldClip
 

Static Private Attributes

static const casacore::String CLASS_NAME
 

Additional Inherited Members

- Static Protected Member Functions inherited from casa::ImageTask< casacore::Float >
static void _copyMask (casacore::Lattice< casacore::Bool > &mask, const casacore::ImageInterface< casacore::Float > &image)
 
static void _copyData (casacore::Lattice< casacore::Float > &data, const casacore::Lattice< casacore::Float > &image)
 

Detailed Description

Begin moving polarization tasks to ImageTask framework.

Intended use:

Public interface

Prerequisite

Etymology

Polarimetric analysis of Images

Synopsis

This class provides polarimetric image analysis capability. It takes an image with a casacore::Stokes axis (some combination of IQUV is needed) as its input.

Many functions return casacore::ImageExpr objects. These are read-only images.

Sometimes the standard deviation of the noise is needed. This is for debiasing polarized intensity images or working out error images. By default it is worked out for you with a clipped mean algorithm. However, you can provide sigma if you know it accurately. It should be the standard deviation of the noise in the absence of signal. You won't measure that very well from casacore::Stokes I if it is dynamic range limited. Better to get it from V or Q or U. When this class needs the standard deviation of the noise, it will try and get it from V or Q and U and finally I.

However, note that the functions sigmaStokes{I,Q,U,V} DO return the standard deviation of the noise for that specific casacore::Stokes type.

The casacore::ImageExpr objects returned have the brightness units and ImageInfo set. The MiscInfo (a permanent record) and logSink are not set.

Motivation

Basic image analysis capability

To Do

Definition at line 83 of file ImagePolTask.h.

Member Enumeration Documentation

Enumerator
I 
Q 
U 
V 

Definition at line 86 of file ImagePolTask.h.

Constructor & Destructor Documentation

casa::ImagePolTask::ImagePolTask ( )
delete
virtual casa::ImagePolTask::~ImagePolTask ( )
virtual
casa::ImagePolTask::ImagePolTask ( const SPCIIF  image,
const casacore::String outname,
casacore::Bool  overwrite 
)
protected

Member Function Documentation

casacore::Bool casa::ImagePolTask::_checkBeams ( const std::vector< StokesTypes > &  stokes,
casacore::Bool  requireChannelEquality,
casacore::Bool  throws = true 
) const
private
casacore::Bool casa::ImagePolTask::_checkIQUBeams ( casacore::Bool  requireChannelEquality,
casacore::Bool  throws = casacore::True 
) const
private
casacore::Bool casa::ImagePolTask::_checkIVBeams ( casacore::Bool  requireChannelEquality,
casacore::Bool  throws = casacore::True 
) const
private
casacore::Bool casa::ImagePolTask::_checkQUBeams ( casacore::Bool  requireChannelEquality,
casacore::Bool  throws = casacore::True 
) const
protected
void casa::ImagePolTask::_createBeamsEqMat ( )
private
void casa::ImagePolTask::_fiddleStokesCoordinate ( casacore::ImageInterface< casacore::Float > &  ie,
casacore::Stokes::StokesTypes  type 
) const
protected

Change the casacore::Stokes casacore::Coordinate for the given complex image to be of the specified casacore::Stokes type.

void casa::ImagePolTask::_fiddleStokesCoordinate ( casacore::CoordinateSystem cSys,
casacore::Stokes::StokesTypes  type 
) const
private
void casa::ImagePolTask::_findStokes ( )
private

Find the casacore::Stokes in the construction image and assign pointers.

std::vector<casacore::Coordinate::Type> casa::ImagePolTask::_getNecessaryCoordinates ( ) const
inlineprotectedvirtual

Represents the minimum set of coordinates necessary for the task to function.

Implements casa::ImageTask< casacore::Float >.

Definition at line 129 of file ImagePolTask.h.

References casacore::Coordinate::STOKES.

CasacRegionManager::StokesControl casa::ImagePolTask::_getStokesControl ( ) const
inlineprotectedvirtual
SPCIIF casa::ImagePolTask::_getStokesImage ( StokesTypes  type) const
protected
casacore::LatticeExprNode casa::ImagePolTask::_makePolIntNode ( casacore::Bool  debias,
casacore::Float  clip,
casacore::Float  sigma,
casacore::Bool  doLin,
casacore::Bool  doCirc 
)
protected

Make a LEN for the give types of polarized intensity.

SPIIF casa::ImagePolTask::_makeSubImage ( casacore::IPosition blc,
casacore::IPosition trc,
casacore::Int  axis,
casacore::Int  pix 
) const
private

Make a casacore::SubImage from the construction image for the specified pixel along the specified pixel axis.

void casa::ImagePolTask::_maskAndZeroNaNs ( SPIIF  out)
protected
void casa::ImagePolTask::_setDoLinDoCirc ( casacore::Bool doLin,
casacore::Bool doCirc,
casacore::Bool  requireI 
) const
protected
void casa::ImagePolTask::_setInfo ( casacore::ImageInterface< Float > &  im,
const StokesTypes  stokes 
) const
protected
casacore::Float casa::ImagePolTask::_sigma ( casacore::Float  clip = 10.0)
private

Get the best estimate of the statistical noise.

This gives you the standard deviation with outliers from the mean clipped first. The idea is to not be confused by source or dynamic range issues. Generally casacore::Stokes V is empty of sources (not always), then Q and U are generally less bright than I. So this function first tries V, then Q and U and lastly I to give you its noise estimate

casacore::Float casa::ImagePolTask::_sigma ( StokesTypes  index,
casacore::Float  clip 
)
private

Find the standard deviation for the casacore::Stokes image specified by the integer index.

casacore::String casa::ImagePolTask::_stokesName ( StokesTypes  index) const
private

Return I, Q, U or V for specified integer index (0-3)

virtual casacore::String casa::ImagePolTask::getClass ( ) const
virtual
casacore::ImageExpr<casacore::Float> casa::ImagePolTask::linPolInt ( casacore::Bool  debias,
casacore::Float  clip = 10.0,
casacore::Float  sigma = -1.0 
)
* casacore::Float casa::ImagePolTask::sigmaLinPolInt ( casacore::Float  clip = 10.0,
casacore::Float  sigma = -1.0 
)

Member Data Documentation

casacore::Matrix<casacore::Bool> casa::ImagePolTask::_beamsEqMat
private

Definition at line 165 of file ImagePolTask.h.

Float casa::ImagePolTask::_oldClip
private

Definition at line 166 of file ImagePolTask.h.

std::vector<SPIIF> casa::ImagePolTask::_stokesImage
private

These blocks are always size 4, with IQUV in slots 0,1,2,3 If your image is IV only, they still use slots 0 and 3.

Definition at line 161 of file ImagePolTask.h.

std::vector<std::shared_ptr<casacore::LatticeStatistics<casacore::Float> > > casa::ImagePolTask::_stokesStats
private

Definition at line 163 of file ImagePolTask.h.

const casacore::String casa::ImagePolTask::CLASS_NAME
staticprivate

Definition at line 168 of file ImagePolTask.h.


The documentation for this class was generated from the following file: