casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends
casa::IncCEMemModel Class Reference

performs MEM algorithm incrementally More...

#include <IncCEMemModel.h>

Inheritance diagram for casa::IncCEMemModel:
casa::LinearModel< Lattice< Float > >

List of all members.

Public Member Functions

 IncCEMemModel (IncEntropy &ent, Lattice< Float > &model, Lattice< Float > &deltaModel, uInt nIntegrations=10, Float sigma=0.001, Float targetFlux=1.0, Bool useFluxConstraint=False, Bool initializeModel=True, Bool imagePlane=False)
 Construct the CEMemModel object and initialise the model.
 IncCEMemModel (IncEntropy &ent, Lattice< Float > &model, Lattice< Float > &deltaModel, Lattice< Float > &prior, uInt nIntegrations=10, Float sigma=0.001, Float targetFlux=1.0, Bool useFluxConstraint=False, Bool initializeModel=True, Bool imagePlane=False)
 Construct the CEMemModel object, initialise the model and Prior images.
 IncCEMemModel (IncEntropy &ent, Lattice< Float > &model, Lattice< Float > &deltaModel, uInt nIntegrations, Lattice< Float > &mask, Float sigma=0.001, Float targetFlux=1.0, Bool useFluxConstraint=False, Bool initializeModel=True, Bool imagePlane=False)
 Construct the CEMemModel object, initialise the model and and mask images.
 IncCEMemModel (IncEntropy &ent, Lattice< Float > &model, Lattice< Float > &deltaModel, Lattice< Float > &prior, Lattice< Float > &mask, uInt nIntegrations=10, Float sigma=0.001, Float targetFlux=1.0, Bool useFluxConstraint=False, Bool initializeModel=True, Bool imagePlane=False)
 Construct the CEMemModel object, initialise the model, Prior, and mask images.
virtual ~IncCEMemModel ()
 destructor
void state ()
 solve the convolution equation returns True if converged
Bool solve (ResidualEquation< Lattice< Float > > &eqn)
 This needs to be "ResidualEquation", using LatConvEquation as polymorphism is broken.
void setEntropy (IncEntropy &myEntropy)
 Set and get various state images and classes.
void getEntropy (IncEntropy &myEntropy)
Lattice< Float > & getModel () const
 set or get the Model image
void setModel (const Lattice< Float > &model)
 Set the current model.
Lattice< Float > & getPrior () const
 set or get the Prior image
void setPrior (Lattice< Float > &prior)
Lattice< Float > & getMask () const
 set or get the Mask image
void setMask (Lattice< Float > &mask)
Float getAlpha () const
 set and get alpha, beta, and Q
Float getBeta () const
void setAlpha (Float alpha)
void setBeta (Float beta)
Float getTolerance ()
 Set various controlling parameters (The most popular controlling parameters are set in the constructor)
void setTolerance (Float x)
Float getQ ()
void setQ (Float x)
Float getGain ()
void setGain (Float x)
Float getMaxNormGrad ()
void setMaxNormGrad (Float x)
Int getInitialNumberIterations ()
void setInitialNumberIterations (Int x)
void setThreshold (const Float x)
 The convergence can also be in terms of the maximum residual (ie, for use in stopping in a major cycle).
void setThresholdSpeedup (const Float iter)
 Thresh doubles in iter iterations.
Float getThreshold ()
virtual void setProgress (CEMemProgress &ccp)
 Set/get the progress display.
virtual CEMemProgressgetProgress ()
Int numberIterations ()
 return the number of iterations completed

Protected Types

enum  GradientType {
  H,
  C,
  F,
  J
}
 Enumerate the different Gradient subscript types. More...

Protected Member Functions

void oneIteration ()
 Perform One Iteration.
Bool applyMask (Lattice< Float > &lat)
 apply mask to a lattice; returns True if mask is available, False if not
void formEntropy ()
 Helper functions that interface with Entropy routines Access to the entropy should be through this interface; the points at which the Entropy is mentioned is then limited to these lines right here, and to the constructors which set the Entropy.
void formGDG ()
void formGDGStep ()
void formGDS ()
void entropyType (String &str)
void relaxMin ()
Bool testConvergence ()
 IncCEMemModel ()
 protected generic constrcutor: DON'T USE IT!
void letEntropyDie ()
 Set entropy pointer to zero: called by Entropy's destructor.
Bool initStuff ()
 initialize itsStep and itsResidual and other stuff
void changeAlphaBeta ()
 controls how to change Alpha and Beta
void initializeAlphaBeta ()
 initialize Alpha-Beta (called by changeAlphaBeta)
void updateAlphaBeta ()
 update Alpha-Beta (called by changeAlphaBeta)
Bool checkImage (const Lattice< Float > *)
 Generic utility functions.
Bool checkImages (const Lattice< Float > *one, const Lattice< Float > *other)
 check that the lattices and the underlying tile sizes are consistent
Bool ok ()
 check that all is well in Denmark: ensure all images are the same size, ensure we have an entropy, ensure state variables have reasonable values
void calculateStep ()
 Helper functions for oneIteration:
void takeStep (Float wt1, Float wt2)
 take one step: clipped addition of wt1*itsModel + wt2*itsStep
Float formFlux ()
 Calculate the flux, itsModMin, and itsModMax.
Bool testConvergenceThreshold ()
 Determine if the peak residual is less than the getThreshold()

Protected Attributes

IncEntropyitsEntropy_ptr
 ------------Private Member Data--------------------- functional form of the entropy
ResidualEquation< Lattice
< Float > > * 
itsResidualEquation_ptr
 form of the Residual method
Lattice< Float > * itsModel_ptr
 Images:
Lattice< Float > * itsDeltaModel_ptr
Lattice< Float > * itsPrior_ptr
Lattice< Float > * itsMask_ptr
Lattice< Float > * itsStep_ptr
 Our OWN internal temp images; delete these upon destruction.
Lattice< Float > * itsResidual_ptr
Bool itsInitializeModel
 Controlling parameters.
uInt itsNumberIterations
Bool itsDoInit
Float itsSigma
Float itsTargetFlux
Float itsDefaultLevel
Float itsTargetChisq
Float itsTolerance
 tolerance for convergence
Float itsQ
 N points per beam.
Float itsGain
 gain for adding step image
Float itsMaxNormGrad
Bool itsUseFluxConstraint
 constrain flux or not?
Bool itsDoImagePlane
 is this an image plane problem (like Single Dish or Optical?)
Float itsThreshold0
Float itsThresholdSpeedup
Float itsAlpha
 State variables.
Float itsBeta
Float itsNormGrad
Float itsFlux
 note that itsModelFlux + itsDeltaFlux = itsFlux
Float itsModelFlux
Float itsDeltaFlux
Float itsChisq
Float itsFit
 sqrt( chi^2/target_chi^2 )
Float itsAFit
 sqrt( chi^2/ Npixels )
Float itsEntropy
 numerical value of entropy
Float itsRequiredModelMin
 Model is constrained to be >= itsNewMin.
Float itsModelMax
 maximum pixel value in model
Float itsModelMin
 minimum pixel value n model
Float itsLength
Double itsGradDotStep0
Double itsGradDotStep1
uInt itsIteration
uInt itsFirstIteration
Matrix< DoubleitsGDG
 matrix of gradient dot products
Float itsCurrentPeakResidual
Float itsNumberPixels
Bool itsChoose
 Accesories.
LogIO itsLog
CEMemProgressitsProgressPtr

Friends

class IncEntropy
 Any new entropies derived from Entropy must sign the friend list:
class IncEntropyI
class IncEntropyEmptiness

Detailed Description

performs MEM algorithm incrementally

Intended use:

Public interface

 <h3>Review Status</h3><dl><dt>Date Reviewed:<dd>yyyy/mm/dd</dl> 

Prerequisite

Etymology

This class is called CEMemModel because it uses the Cornwell and Evans MEM algorithm to deconvolve the model. The "Inc" is from Incremental, as the gradient is calculated from an incremental dirty image, but the entropy is calculated from the previous model plus the deltaModel

Synopsis

This class is used to perform the Cornwell and Evans MEM Algorithm on an Array. Only the deconvolved model of the sky are directly stored by this class. The point spread function (psf) and convolved (dirty) image are stored in a companion class which is must be derived from ResidualEquation.

The deconvolution works like this. The user constructs a CEMemModel by specifying an initial model of the sky. This can by be one,two,three... dimensional depending on the dimension of the psf (see below). The user then constructs a class which implements the forward equation between the model and the dirty image. Typically this will be the ConvolutionEquation class, although any class which has a ResidualEquation interface will work (but perhaps very slowly, as the ConvolutionEquation class has member functions optimised for CLEAN and MEM)

The user then calls the solve() function (with the appropriate equation class as an arguement), and this class will perform the MEM deconvolution. The various MEM parameters are set (prior to calling solve) using the functions derived from the Iterate class, in particular setNumberIterations().

The solve() function does not return either the deconvolved model or the residuals. The solved model can be obtained using the getModel() function (derived from ArrayModel()) and the residual can be obtained using the residual() member function of the Convolution/Residual Equation Class.

The size and shape of the model used in this class MUST be the same as the convolved data (Dirty Image), stored in the companion ResidualEquation Class. However the model (and convolved data) can have more dimensions than the psf, as well as a different size (either larger or smaller). When the dimensionality is different the deconvolution is done independendtly in each "plane" of the model. (Note this has not been implemented yet but is relatively simple to do if necessary).

StokesVectors are not yet implemented.

A companion class to this one is MaskedCEMemModel. This provides the same functionality but is used with MaskedArrays which indicate which regions of the NewtonRaphson (residual) image to apply when forming the step image (MaskedCEMemModel is not yet implemented).

Example

    Matrix<Float> psf(12,12), dirty(10,10), initialModel(10,10);
    ...put appropriate values into psf, dirty, & initialModel...\.
    CEMemModel<Float> deconvolvedModel(initialModel); 
    ConvolutionEquation convEqn(psf, dirty);
    deconvolvedModel.setSigma(0.001); 
    deconvolvedModel.setTargetFlux(-2.500); 
    deconvolvedModel.setNumberIterations(30);
    Bool convWorked = deconvolvedModel.solve(convEqn);
    Array<Float> finalModel, residuals;
    if (convWorked){
      finalModel = deconvolvedModel.getModel();
      ConvEqn.residual(deconvolvedModel, finalResidual);
    }

Motivation

This class is needed to deconvolve extended images. In time, the MEM algorithm will be a principle player in the mosaicing stuff.

Template Type Argument Requirements (T)

testing: Float: lets try it first StokesVector: will require lots more work

To Do

Definition at line 148 of file IncCEMemModel.h.


Member Enumeration Documentation

Enumerate the different Gradient subscript types.

Enumerator:
H 

Entropy.

C 

Chi_sq.

F 

Flux.

J 

Objective function J.

Definition at line 460 of file IncCEMemModel.h.


Constructor & Destructor Documentation

casa::IncCEMemModel::IncCEMemModel ( IncEntropy ent,
Lattice< Float > &  model,
Lattice< Float > &  deltaModel,
uInt  nIntegrations = 10,
Float  sigma = 0.001,
Float  targetFlux = 1.0,
Bool  useFluxConstraint = False,
Bool  initializeModel = True,
Bool  imagePlane = False 
)

Construct the CEMemModel object and initialise the model.

casa::IncCEMemModel::IncCEMemModel ( IncEntropy ent,
Lattice< Float > &  model,
Lattice< Float > &  deltaModel,
Lattice< Float > &  prior,
uInt  nIntegrations = 10,
Float  sigma = 0.001,
Float  targetFlux = 1.0,
Bool  useFluxConstraint = False,
Bool  initializeModel = True,
Bool  imagePlane = False 
)

Construct the CEMemModel object, initialise the model and Prior images.

casa::IncCEMemModel::IncCEMemModel ( IncEntropy ent,
Lattice< Float > &  model,
Lattice< Float > &  deltaModel,
uInt  nIntegrations,
Lattice< Float > &  mask,
Float  sigma = 0.001,
Float  targetFlux = 1.0,
Bool  useFluxConstraint = False,
Bool  initializeModel = True,
Bool  imagePlane = False 
)

Construct the CEMemModel object, initialise the model and and mask images.

casa::IncCEMemModel::IncCEMemModel ( IncEntropy ent,
Lattice< Float > &  model,
Lattice< Float > &  deltaModel,
Lattice< Float > &  prior,
Lattice< Float > &  mask,
uInt  nIntegrations = 10,
Float  sigma = 0.001,
Float  targetFlux = 1.0,
Bool  useFluxConstraint = False,
Bool  initializeModel = True,
Bool  imagePlane = False 
)

Construct the CEMemModel object, initialise the model, Prior, and mask images.

virtual casa::IncCEMemModel::~IncCEMemModel ( ) [virtual]

destructor

protected generic constrcutor: DON'T USE IT!


Member Function Documentation

Bool casa::IncCEMemModel::applyMask ( Lattice< Float > &  lat) [protected]

apply mask to a lattice; returns True if mask is available, False if not

void casa::IncCEMemModel::calculateStep ( ) [protected]

Helper functions for oneIteration:

calculate size of step

controls how to change Alpha and Beta

Bool casa::IncCEMemModel::checkImage ( const Lattice< Float > *  ) [protected]

Generic utility functions.

check that a single image is onf plausible shape

Bool casa::IncCEMemModel::checkImages ( const Lattice< Float > *  one,
const Lattice< Float > *  other 
) [protected]

check that the lattices and the underlying tile sizes are consistent

void casa::IncCEMemModel::entropyType ( String str) [inline, protected]

Definition at line 315 of file IncCEMemModel.h.

References casa::IncEntropy::entropyType(), and itsEntropy_ptr.

void casa::IncCEMemModel::formEntropy ( ) [inline, protected]

Helper functions that interface with Entropy routines Access to the entropy should be through this interface; the points at which the Entropy is mentioned is then limited to these lines right here, and to the constructors which set the Entropy.

The entropy should not ever change the private

Definition at line 307 of file IncCEMemModel.h.

References casa::IncEntropy::formEntropy(), itsEntropy, and itsEntropy_ptr.

Calculate the flux, itsModMin, and itsModMax.

void casa::IncCEMemModel::formGDG ( ) [inline, protected]

Definition at line 309 of file IncCEMemModel.h.

References casa::IncEntropy::formGDG(), itsEntropy_ptr, and itsGDG.

void casa::IncCEMemModel::formGDGStep ( ) [inline, protected]

Definition at line 311 of file IncCEMemModel.h.

References casa::IncEntropy::formGDGStep(), itsEntropy_ptr, and itsGDG.

void casa::IncCEMemModel::formGDS ( ) [inline, protected]

Definition at line 313 of file IncCEMemModel.h.

References casa::IncEntropy::formGDS(), itsEntropy_ptr, and itsGradDotStep1.

set and get alpha, beta, and Q

Definition at line 252 of file IncCEMemModel.h.

References itsAlpha.

Float casa::IncCEMemModel::getBeta ( ) const [inline]

Definition at line 253 of file IncCEMemModel.h.

References itsBeta.

void casa::IncCEMemModel::getEntropy ( IncEntropy myEntropy) [inline]

Definition at line 230 of file IncCEMemModel.h.

References itsEntropy_ptr.

Definition at line 266 of file IncCEMemModel.h.

References itsGain.

Definition at line 270 of file IncCEMemModel.h.

References itsFirstIteration.

set or get the Mask image

Definition at line 244 of file IncCEMemModel.h.

References casa::Lattice< T >::clone(), and itsMask_ptr.

Definition at line 268 of file IncCEMemModel.h.

References itsMaxNormGrad.

Lattice<Float>& casa::IncCEMemModel::getModel ( ) const [inline, virtual]

set or get the Model image

Implements casa::LinearModel< Lattice< Float > >.

Definition at line 233 of file IncCEMemModel.h.

References itsDeltaModel_ptr.

set or get the Prior image

Definition at line 239 of file IncCEMemModel.h.

References casa::Lattice< T >::clone(), and itsPrior_ptr.

virtual CEMemProgress& casa::IncCEMemModel::getProgress ( ) [inline, virtual]

Definition at line 284 of file IncCEMemModel.h.

References itsProgressPtr.

Definition at line 264 of file IncCEMemModel.h.

References itsQ.

Set various controlling parameters (The most popular controlling parameters are set in the constructor)

Definition at line 262 of file IncCEMemModel.h.

References itsTolerance.

initialize Alpha-Beta (called by changeAlphaBeta)

initialize itsStep and itsResidual and other stuff

void casa::IncCEMemModel::letEntropyDie ( ) [inline, protected]

Set entropy pointer to zero: called by Entropy's destructor.

Definition at line 328 of file IncCEMemModel.h.

References itsEntropy_ptr.

return the number of iterations completed

Definition at line 288 of file IncCEMemModel.h.

References itsIteration.

Bool casa::IncCEMemModel::ok ( ) [protected]

check that all is well in Denmark: ensure all images are the same size, ensure we have an entropy, ensure state variables have reasonable values

void casa::IncCEMemModel::oneIteration ( ) [protected]

Perform One Iteration.

void casa::IncCEMemModel::relaxMin ( ) [inline, protected]
void casa::IncCEMemModel::setAlpha ( Float  alpha) [inline]

Definition at line 254 of file IncCEMemModel.h.

References itsAlpha.

void casa::IncCEMemModel::setBeta ( Float  beta) [inline]

Definition at line 255 of file IncCEMemModel.h.

References itsBeta.

void casa::IncCEMemModel::setEntropy ( IncEntropy myEntropy) [inline]

Set and get various state images and classes.

set or get the Entropy class

Definition at line 229 of file IncCEMemModel.h.

References itsEntropy_ptr.

void casa::IncCEMemModel::setGain ( Float  x) [inline]

Definition at line 267 of file IncCEMemModel.h.

References itsGain.

Definition at line 271 of file IncCEMemModel.h.

References itsFirstIteration.

Definition at line 269 of file IncCEMemModel.h.

References itsMaxNormGrad.

void casa::IncCEMemModel::setModel ( const Lattice< Float > &  model) [inline, virtual]

Set the current model.

Implements casa::LinearModel< Lattice< Float > >.

Definition at line 235 of file IncCEMemModel.h.

References casa::Lattice< T >::clone(), and itsDeltaModel_ptr.

virtual void casa::IncCEMemModel::setProgress ( CEMemProgress ccp) [inline, virtual]

Set/get the progress display.

Definition at line 283 of file IncCEMemModel.h.

References itsProgressPtr.

void casa::IncCEMemModel::setQ ( Float  x) [inline]

Definition at line 265 of file IncCEMemModel.h.

References itsQ.

void casa::IncCEMemModel::setThreshold ( const Float  x) [inline]

The convergence can also be in terms of the maximum residual (ie, for use in stopping in a major cycle).

Definition at line 276 of file IncCEMemModel.h.

References itsThreshold0.

void casa::IncCEMemModel::setThresholdSpeedup ( const Float  iter) [inline]

Thresh doubles in iter iterations.

Definition at line 278 of file IncCEMemModel.h.

References itsThresholdSpeedup.

Definition at line 263 of file IncCEMemModel.h.

References itsTolerance.

This needs to be "ResidualEquation", using LatConvEquation as polymorphism is broken.

solve the convolution equation returns True if converged

Gives information about the state of the CEMem (ie, using mask image, using prior image; more work here!)

void casa::IncCEMemModel::takeStep ( Float  wt1,
Float  wt2 
) [protected]

take one step: clipped addition of wt1*itsModel + wt2*itsStep

Bool casa::IncCEMemModel::testConvergence ( ) [inline, protected]

Definition at line 319 of file IncCEMemModel.h.

References itsEntropy_ptr, and casa::IncEntropy::testConvergence().

Determine if the peak residual is less than the getThreshold()

update Alpha-Beta (called by changeAlphaBeta)


Friends And Related Function Documentation

friend class IncEntropy [friend]

Any new entropies derived from Entropy must sign the friend list:

Definition at line 152 of file IncCEMemModel.h.

friend class IncEntropyEmptiness [friend]

Definition at line 154 of file IncCEMemModel.h.

friend class IncEntropyI [friend]

Definition at line 153 of file IncCEMemModel.h.


Member Data Documentation

sqrt( chi^2/ Npixels )

Definition at line 432 of file IncCEMemModel.h.

State variables.

Definition at line 421 of file IncCEMemModel.h.

Referenced by getAlpha(), and setAlpha().

Definition at line 422 of file IncCEMemModel.h.

Referenced by getBeta(), and setBeta().

Definition at line 428 of file IncCEMemModel.h.

Accesories.

Definition at line 455 of file IncCEMemModel.h.

Definition at line 448 of file IncCEMemModel.h.

Definition at line 402 of file IncCEMemModel.h.

Definition at line 427 of file IncCEMemModel.h.

Definition at line 387 of file IncCEMemModel.h.

Referenced by getModel(), and setModel().

is this an image plane problem (like Single Dish or Optical?)

Definition at line 414 of file IncCEMemModel.h.

Definition at line 399 of file IncCEMemModel.h.

numerical value of entropy

Definition at line 434 of file IncCEMemModel.h.

Referenced by formEntropy().

------------Private Member Data--------------------- functional form of the entropy

Definition at line 380 of file IncCEMemModel.h.

Referenced by entropyType(), formEntropy(), formGDG(), formGDGStep(), formGDS(), getEntropy(), letEntropyDie(), relaxMin(), setEntropy(), and testConvergence().

Definition at line 445 of file IncCEMemModel.h.

Referenced by getInitialNumberIterations(), and setInitialNumberIterations().

sqrt( chi^2/target_chi^2 )

Definition at line 430 of file IncCEMemModel.h.

note that itsModelFlux + itsDeltaFlux = itsFlux

Definition at line 425 of file IncCEMemModel.h.

gain for adding step image

Definition at line 409 of file IncCEMemModel.h.

Referenced by getGain(), and setGain().

matrix of gradient dot products

Definition at line 447 of file IncCEMemModel.h.

Referenced by formGDG(), and formGDGStep().

Definition at line 442 of file IncCEMemModel.h.

Definition at line 443 of file IncCEMemModel.h.

Referenced by formGDS().

Controlling parameters.

Definition at line 397 of file IncCEMemModel.h.

Definition at line 444 of file IncCEMemModel.h.

Referenced by numberIterations().

Definition at line 441 of file IncCEMemModel.h.

Definition at line 456 of file IncCEMemModel.h.

Definition at line 389 of file IncCEMemModel.h.

Referenced by getMask().

Definition at line 410 of file IncCEMemModel.h.

Referenced by getMaxNormGrad(), and setMaxNormGrad().

Images:

Definition at line 386 of file IncCEMemModel.h.

Definition at line 426 of file IncCEMemModel.h.

maximum pixel value in model

Definition at line 438 of file IncCEMemModel.h.

minimum pixel value n model

Definition at line 440 of file IncCEMemModel.h.

Definition at line 423 of file IncCEMemModel.h.

Definition at line 398 of file IncCEMemModel.h.

Definition at line 450 of file IncCEMemModel.h.

Definition at line 388 of file IncCEMemModel.h.

Referenced by getPrior().

Definition at line 471 of file IncCEMemModel.h.

Referenced by getProgress(), and setProgress().

N points per beam.

Definition at line 407 of file IncCEMemModel.h.

Referenced by getQ(), and setQ().

Model is constrained to be >= itsNewMin.

Definition at line 436 of file IncCEMemModel.h.

Referenced by relaxMin().

Definition at line 392 of file IncCEMemModel.h.

form of the Residual method

Definition at line 383 of file IncCEMemModel.h.

Definition at line 400 of file IncCEMemModel.h.

Our OWN internal temp images; delete these upon destruction.

Definition at line 391 of file IncCEMemModel.h.

Definition at line 403 of file IncCEMemModel.h.

Definition at line 401 of file IncCEMemModel.h.

Definition at line 415 of file IncCEMemModel.h.

Referenced by setThreshold().

Definition at line 416 of file IncCEMemModel.h.

Referenced by setThresholdSpeedup().

tolerance for convergence

Definition at line 405 of file IncCEMemModel.h.

Referenced by getTolerance(), and setTolerance().

constrain flux or not?

Definition at line 412 of file IncCEMemModel.h.


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