casa
5.7.0-16
|
Implements the Cornwell & Evans MEM Algorithm on Lattices. More...
#include <CEMemModel.h>
Public Member Functions | |
CEMemModel (Entropy &ent, casacore::Lattice< casacore::Float > &model, casacore::uInt nIntegrations=10, casacore::Float sigma=0.001, casacore::Float targetFlux=1.0, casacore::Bool useFluxConstraint=false, casacore::Bool initializeModel=true, casacore::Bool imagePlane=false) | |
Construct the CEMemModel object and initialise the model. More... | |
CEMemModel (Entropy &ent, casacore::Lattice< casacore::Float > &model, casacore::Lattice< casacore::Float > &prior, casacore::uInt nIntegrations=10, casacore::Float sigma=0.001, casacore::Float targetFlux=1.0, casacore::Bool useFluxConstraint=false, casacore::Bool initializeModel=true, casacore::Bool imagePlane=false) | |
Construct the CEMemModel object, initialise the model and Prior images. More... | |
CEMemModel (Entropy &ent, casacore::Lattice< casacore::Float > &model, casacore::Lattice< casacore::Float > &prior, casacore::Lattice< casacore::Float > &mask, casacore::uInt nIntegrations=10, casacore::Float sigma=0.001, casacore::Float targetFlux=1.0, casacore::Bool useFluxConstraint=false, casacore::Bool initializeModel=true, casacore::Bool imagePlane=false) | |
Construct the CEMemModel object, initialise the model, Prior, and mask images. More... | |
virtual | ~CEMemModel () |
destructor More... | |
void | state () |
solve the convolution equation returns true if converged More... | |
casacore::Bool | solve (ResidualEquation< casacore::Lattice< casacore::Float > > &eqn) |
This needs to be "ResidualEquation", using LatConvEquation as polymorphism is broken. More... | |
void | setEntropy (Entropy &myEntropy) |
Set and get various state images and classes. More... | |
void | getEntropy (Entropy &myEntropy) |
casacore::Lattice < casacore::Float > & | getModel () const |
set or get the Model image More... | |
void | setModel (const casacore::Lattice< casacore::Float > &model) |
Set the current model. More... | |
casacore::Lattice < casacore::Float > & | getPrior () const |
set or get the Prior image More... | |
void | setPrior (casacore::Lattice< casacore::Float > &prior) |
casacore::Lattice < casacore::Float > & | getMask () const |
set or get the Mask image More... | |
void | setMask (casacore::Lattice< casacore::Float > &mask) |
casacore::Lattice < casacore::Float > & | getResidual () const |
get the Residual image More... | |
casacore::Float | getAlpha () const |
set and get alpha and beta More... | |
casacore::Float | getBeta () const |
void | setAlpha (casacore::Float alpha) |
void | setBeta (casacore::Float beta) |
casacore::Float | getTolerance () |
Set various controlling parameters (The most popular controlling parameters are set in the constructor) More... | |
void | setTolerance (casacore::Float x) |
casacore::Float | getQ () |
void | setQ (casacore::Float x) |
casacore::Float | getGain () |
void | setGain (casacore::Float x) |
casacore::Float | getMaxNormGrad () |
void | setMaxNormGrad (casacore::Float x) |
casacore::Int | getInitialNumberIterations () |
void | setInitialNumberIterations (casacore::Int x) |
void | setThreshold (const casacore::Float x) |
The convergence can also be in terms of the maximum residual (ie, for use in stopping in a major cycle). More... | |
void | setThresholdSpeedup (const casacore::Float iter) |
Thresh doubles in iter iterations. More... | |
casacore::Float | getThreshold () |
virtual void | setProgress (CEMemProgress &ccp) |
Set/get the progress display. More... | |
virtual CEMemProgress & | getProgress () |
casacore::Int | numberIterations () |
return the number of iterations completed More... | |
void | setCycleFlux (casacore::Float x) |
if this MEMModel is constructed in a MF loop, we may need to increment the flux by the last iterations flux More... | |
casacore::Float | getCycleFlux () |
Public Member Functions inherited from casa::LinearModel< casacore::Lattice< casacore::Float > > | |
virtual | ~LinearModel () |
A virtual destructor is necessary. More... | |
Protected Types | |
enum | GradientType { H, C, F, J } |
Enumerate the different Gradient subscript types. More... | |
Protected Member Functions | |
void | oneIteration () |
Perform One Iteration. More... | |
casacore::Bool | applyMask (casacore::Lattice< casacore::Float > &lat) |
apply mask to a lattice; returns true if mask is available, false if not More... | |
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. More... | |
void | formGDG () |
void | formGDGStep () |
void | formGDS () |
void | entropyType (casacore::String &str) |
void | relaxMin () |
casacore::Bool | testConvergence () |
CEMemModel () | |
protected generic constrcutor: DON'T USE IT! More... | |
void | letEntropyDie () |
Set entropy pointer to zero: called by Entropy's destructor. More... | |
casacore::Bool | initStuff () |
initialize itsStep and itsResidual and other stuff More... | |
void | changeAlphaBeta () |
controls how to change Alpha and Beta More... | |
void | initializeAlphaBeta () |
initialize Alpha-Beta (called by changeAlphaBeta) More... | |
void | updateAlphaBeta () |
update Alpha-Beta (called by changeAlphaBeta) More... | |
casacore::Bool | checkImage (const casacore::Lattice< casacore::Float > *) |
Generic utility functions. More... | |
casacore::Bool | checkImages (const casacore::Lattice< casacore::Float > *one, const casacore::Lattice< casacore::Float > *other) |
check that the lattices and the underlying tile sizes are consistent More... | |
casacore::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 More... | |
void | calculateStep () |
Helper functions for oneIteration: More... | |
void | takeStep (casacore::Float wt1, casacore::Float wt2) |
take one step: clipped addition of wt1*itsModel + wt2*itsStep More... | |
casacore::Float | formFlux () |
Calculate the flux, itsModMin, and itsModMax. More... | |
casacore::Bool | testConvergenceThreshold () |
Determine if the peak residual is less than the getThreshold() More... | |
Friends | |
class | Entropy |
Any new entropies derived from Entropy must sign the friend list: More... | |
class | EntropyI |
class | EntropyEmptiness |
Implements the Cornwell & Evans MEM Algorithm on Lattices.
Public interface
This class is called CEMemModel because it uses the Cornwell and Evans MEM algorithm to deconvolve the model.
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).
This class is needed to deconvolve extended images. In time, the MEM algorithm will be a principle player in the mosaicing stuff.
testing: casacore::Float: lets try it first StokesVector: will require lots more work
Definition at line 146 of file CEMemModel.h.
|
protected |
Enumerate the different Gradient subscript types.
Enumerator | |
---|---|
H | |
C |
Chi_sq. |
F |
Flux. |
J |
Objective function J. |
Definition at line 450 of file CEMemModel.h.
casa::CEMemModel::CEMemModel | ( | Entropy & | ent, |
casacore::Lattice< casacore::Float > & | model, | ||
casacore::uInt | nIntegrations = 10 , |
||
casacore::Float | sigma = 0.001 , |
||
casacore::Float | targetFlux = 1.0 , |
||
casacore::Bool | useFluxConstraint = false , |
||
casacore::Bool | initializeModel = true , |
||
casacore::Bool | imagePlane = false |
||
) |
Construct the CEMemModel object and initialise the model.
casa::CEMemModel::CEMemModel | ( | Entropy & | ent, |
casacore::Lattice< casacore::Float > & | model, | ||
casacore::Lattice< casacore::Float > & | prior, | ||
casacore::uInt | nIntegrations = 10 , |
||
casacore::Float | sigma = 0.001 , |
||
casacore::Float | targetFlux = 1.0 , |
||
casacore::Bool | useFluxConstraint = false , |
||
casacore::Bool | initializeModel = true , |
||
casacore::Bool | imagePlane = false |
||
) |
Construct the CEMemModel object, initialise the model and Prior images.
casa::CEMemModel::CEMemModel | ( | Entropy & | ent, |
casacore::Lattice< casacore::Float > & | model, | ||
casacore::Lattice< casacore::Float > & | prior, | ||
casacore::Lattice< casacore::Float > & | mask, | ||
casacore::uInt | nIntegrations = 10 , |
||
casacore::Float | sigma = 0.001 , |
||
casacore::Float | targetFlux = 1.0 , |
||
casacore::Bool | useFluxConstraint = false , |
||
casacore::Bool | initializeModel = true , |
||
casacore::Bool | imagePlane = false |
||
) |
Construct the CEMemModel object, initialise the model, Prior, and mask images.
|
virtual |
destructor
|
protected |
protected generic constrcutor: DON'T USE IT!
|
protected |
apply mask to a lattice; returns true if mask is available, false if not
|
protected |
Helper functions for oneIteration:
calculate size of step
|
protected |
controls how to change Alpha and Beta
|
protected |
Generic utility functions.
check that a single image is onf plausible shape
|
protected |
check that the lattices and the underlying tile sizes are consistent
|
inlineprotected |
Definition at line 307 of file CEMemModel.h.
References casa::Entropy::entropyType(), and itsEntropy_ptr.
|
inlineprotected |
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 299 of file CEMemModel.h.
References casa::Entropy::formEntropy(), itsEntropy, and itsEntropy_ptr.
|
protected |
Calculate the flux, itsModMin, and itsModMax.
|
inlineprotected |
Definition at line 301 of file CEMemModel.h.
References casa::Entropy::formGDG(), itsEntropy_ptr, and itsGDG.
|
inlineprotected |
Definition at line 303 of file CEMemModel.h.
References casa::Entropy::formGDGStep(), itsEntropy_ptr, and itsGDG.
|
inlineprotected |
Definition at line 305 of file CEMemModel.h.
References casa::Entropy::formGDS(), itsEntropy_ptr, and itsGradDotStep1.
|
inline |
|
inline |
Definition at line 240 of file CEMemModel.h.
References itsBeta.
|
inline |
Definition at line 280 of file CEMemModel.h.
References itsCycleFlux.
|
inline |
Definition at line 212 of file CEMemModel.h.
References itsEntropy_ptr.
|
inline |
Definition at line 253 of file CEMemModel.h.
References itsGain.
|
inline |
Definition at line 257 of file CEMemModel.h.
References itsFirstIteration.
|
inline |
set or get the Mask image
Definition at line 226 of file CEMemModel.h.
References casacore::Lattice< T >::clone(), and itsMask_ptr.
|
inline |
Definition at line 255 of file CEMemModel.h.
References itsMaxNormGrad.
|
inlinevirtual |
set or get the Model image
Implements casa::LinearModel< casacore::Lattice< casacore::Float > >.
Definition at line 215 of file CEMemModel.h.
References casacore::Lattice< T >::clone(), and itsModel_ptr.
|
inline |
set or get the Prior image
Definition at line 221 of file CEMemModel.h.
References casacore::Lattice< T >::clone(), and itsPrior_ptr.
|
inlinevirtual |
Definition at line 271 of file CEMemModel.h.
References itsProgressPtr.
|
inline |
Definition at line 251 of file CEMemModel.h.
References itsQ.
|
inline |
get the Residual image
Definition at line 231 of file CEMemModel.h.
References casacore::Lattice< T >::clone(), and itsResidual_ptr.
casacore::Float casa::CEMemModel::getThreshold | ( | ) |
|
inline |
Set various controlling parameters (The most popular controlling parameters are set in the constructor)
Definition at line 249 of file CEMemModel.h.
References itsTolerance.
|
protected |
initialize Alpha-Beta (called by changeAlphaBeta)
|
protected |
initialize itsStep and itsResidual and other stuff
|
inlineprotected |
Set entropy pointer to zero: called by Entropy's destructor.
Definition at line 320 of file CEMemModel.h.
References itsEntropy_ptr.
|
inline |
return the number of iterations completed
Definition at line 275 of file CEMemModel.h.
References itsIteration.
|
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
|
protected |
Perform One Iteration.
|
inlineprotected |
Definition at line 309 of file CEMemModel.h.
References itsEntropy_ptr, itsRequiredModelMin, and casa::Entropy::relaxMin().
|
inline |
Definition at line 241 of file CEMemModel.h.
References itsAlpha.
|
inline |
Definition at line 242 of file CEMemModel.h.
References itsBeta.
|
inline |
if this MEMModel is constructed in a MF loop, we may need to increment the flux by the last iterations flux
Definition at line 279 of file CEMemModel.h.
References itsCycleFlux.
|
inline |
Set and get various state images and classes.
set or get the Entropy class
Definition at line 211 of file CEMemModel.h.
References itsEntropy_ptr.
|
inline |
Definition at line 254 of file CEMemModel.h.
References itsGain.
|
inline |
Definition at line 258 of file CEMemModel.h.
References itsFirstIteration.
void casa::CEMemModel::setMask | ( | casacore::Lattice< casacore::Float > & | mask | ) |
|
inline |
Definition at line 256 of file CEMemModel.h.
References itsMaxNormGrad.
|
inlinevirtual |
Set the current model.
Implements casa::LinearModel< casacore::Lattice< casacore::Float > >.
Definition at line 217 of file CEMemModel.h.
References casacore::Lattice< T >::clone(), and itsModel_ptr.
void casa::CEMemModel::setPrior | ( | casacore::Lattice< casacore::Float > & | prior | ) |
|
inlinevirtual |
Set/get the progress display.
Definition at line 270 of file CEMemModel.h.
References itsProgressPtr.
|
inline |
Definition at line 252 of file CEMemModel.h.
References itsQ.
|
inline |
The convergence can also be in terms of the maximum residual (ie, for use in stopping in a major cycle).
Definition at line 263 of file CEMemModel.h.
References itsThreshold0.
|
inline |
Thresh doubles in iter iterations.
Definition at line 265 of file CEMemModel.h.
References itsThresholdSpeedup.
|
inline |
Definition at line 250 of file CEMemModel.h.
References itsTolerance.
casacore::Bool casa::CEMemModel::solve | ( | ResidualEquation< casacore::Lattice< casacore::Float > > & | eqn | ) |
This needs to be "ResidualEquation", using LatConvEquation as polymorphism is broken.
void casa::CEMemModel::state | ( | ) |
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!)
|
protected |
take one step: clipped addition of wt1*itsModel + wt2*itsStep
|
inlineprotected |
Definition at line 311 of file CEMemModel.h.
References itsEntropy_ptr, and casa::Entropy::testConvergence().
|
protected |
Determine if the peak residual is less than the getThreshold()
|
protected |
update Alpha-Beta (called by changeAlphaBeta)
|
friend |
Any new entropies derived from Entropy must sign the friend list:
Definition at line 150 of file CEMemModel.h.
|
friend |
Definition at line 152 of file CEMemModel.h.
|
friend |
Definition at line 151 of file CEMemModel.h.
|
protected |
sqrt(chi^2/ Npixels)
Definition at line 422 of file CEMemModel.h.
|
protected |
State variables.
Definition at line 413 of file CEMemModel.h.
Referenced by getAlpha(), and setAlpha().
|
protected |
Definition at line 414 of file CEMemModel.h.
|
protected |
Definition at line 418 of file CEMemModel.h.
|
protected |
Accesories.
Definition at line 445 of file CEMemModel.h.
|
protected |
Definition at line 438 of file CEMemModel.h.
|
protected |
Definition at line 408 of file CEMemModel.h.
Referenced by getCycleFlux(), and setCycleFlux().
|
protected |
Definition at line 393 of file CEMemModel.h.
|
protected |
is this an image plane problem (like Single Dish or Optical?)
Definition at line 405 of file CEMemModel.h.
|
protected |
Definition at line 390 of file CEMemModel.h.
|
protected |
numerical value of entropy
Definition at line 424 of file CEMemModel.h.
Referenced by formEntropy().
|
protected |
---------—Private Member casacore::Data------------------— functional form of the entropy
Definition at line 372 of file CEMemModel.h.
Referenced by entropyType(), formEntropy(), formGDG(), formGDGStep(), formGDS(), getEntropy(), letEntropyDie(), relaxMin(), setEntropy(), and testConvergence().
|
protected |
Definition at line 435 of file CEMemModel.h.
Referenced by getInitialNumberIterations(), and setInitialNumberIterations().
|
protected |
sqrt(chi^2/target_chi^2)
Definition at line 420 of file CEMemModel.h.
|
protected |
Definition at line 416 of file CEMemModel.h.
|
protected |
gain for adding step image
Definition at line 400 of file CEMemModel.h.
|
protected |
matrix of gradient dot products
Definition at line 437 of file CEMemModel.h.
Referenced by formGDG(), and formGDGStep().
|
protected |
Definition at line 432 of file CEMemModel.h.
|
protected |
Definition at line 433 of file CEMemModel.h.
Referenced by formGDS().
|
protected |
Controlling parameters.
Definition at line 388 of file CEMemModel.h.
|
protected |
Definition at line 434 of file CEMemModel.h.
Referenced by numberIterations().
|
protected |
Definition at line 431 of file CEMemModel.h.
|
protected |
Definition at line 446 of file CEMemModel.h.
|
protected |
Definition at line 380 of file CEMemModel.h.
Referenced by getMask().
|
protected |
Definition at line 401 of file CEMemModel.h.
Referenced by getMaxNormGrad(), and setMaxNormGrad().
|
protected |
|
protected |
maximum pixel value in model
Definition at line 428 of file CEMemModel.h.
|
protected |
minimum pixel value n model
Definition at line 430 of file CEMemModel.h.
|
protected |
Definition at line 415 of file CEMemModel.h.
|
protected |
Definition at line 389 of file CEMemModel.h.
|
protected |
Definition at line 440 of file CEMemModel.h.
|
protected |
Definition at line 379 of file CEMemModel.h.
Referenced by getPrior().
|
protected |
Definition at line 461 of file CEMemModel.h.
Referenced by getProgress(), and setProgress().
|
protected |
|
protected |
Model is constrained to be >= itsNewMin.
Definition at line 426 of file CEMemModel.h.
Referenced by relaxMin().
|
protected |
Definition at line 383 of file CEMemModel.h.
Referenced by getResidual().
|
protected |
form of the Residual method
Definition at line 375 of file CEMemModel.h.
|
protected |
Definition at line 391 of file CEMemModel.h.
|
protected |
Our OWN internal temp images; delete these upon destruction.
Definition at line 382 of file CEMemModel.h.
|
protected |
Definition at line 394 of file CEMemModel.h.
|
protected |
Definition at line 392 of file CEMemModel.h.
|
protected |
Definition at line 406 of file CEMemModel.h.
Referenced by setThreshold().
|
protected |
Definition at line 407 of file CEMemModel.h.
Referenced by setThresholdSpeedup().
|
protected |
tolerance for convergence
Definition at line 396 of file CEMemModel.h.
Referenced by getTolerance(), and setTolerance().
|
protected |
Definition at line 417 of file CEMemModel.h.
|
protected |
constrain flux or not?
Definition at line 403 of file CEMemModel.h.