casa
$Rev:20696$
|
Fit 2-D objects to 2-D Lattices or Arrays. More...
#include <Fit2D.h>
Public Types | |
enum | Types { GAUSSIAN, DISK, LEVEL, PLANE, nTypes } |
Enum describing the different models you can fit. More... | |
enum | ErrorTypes { OK, NOCONVERGE, FAILED, NOGOOD, NOMODELS, nErrorTypes } |
Enum describing output error conditions. More... | |
Public Member Functions | |
Fit2D (LogIO &logger) | |
Constructor. | |
~Fit2D () | |
Destructor. | |
Fit2D (const Fit2D &other) | |
Copy constructor. | |
Fit2D & | operator= (const Fit2D &other) |
Assignment operator. | |
uInt | addModel (Fit2D::Types type, const Vector< Double > ¶meters, const Vector< Bool > ¶meterMask) |
Add a model to the list to be simultaneously fit and return its index. | |
uInt | addModel (Fit2D::Types type, const Vector< Double > ¶meters) |
void | setIncludeRange (Double minVal, Double maxVal) |
Set a pixel selection range. | |
void | setExcludeRange (Double minVal, Double maxVal) |
void | resetRange () |
uInt | nModels () const |
Recover number of models. | |
Vector< Double > | estimate (Fit2D::Types type, const MaskedLattice< Float > &data) |
Determine an initial estimate for the solution of the specified model type to the given data - no compound models are allowable in this function. | |
Vector< Double > | estimate (Fit2D::Types type, const Lattice< Float > &data) |
Vector< Double > | estimate (Fit2D::Types type, const Array< Float > &data) |
Vector< Double > | estimate (Fit2D::Types type, const Array< Float > &data, const Array< Bool > &mask) |
Fit2D::ErrorTypes | fit (const MaskedLattice< Float > &data, const Lattice< Float > &sigma) |
Do the fit. | |
Fit2D::ErrorTypes | fit (const Lattice< Float > &data, const Lattice< Float > &sigma) |
Fit2D::ErrorTypes | fit (const Array< Float > &data, const Array< Float > &sigma) |
Fit2D::ErrorTypes | fit (const Array< Float > &data, const Array< Bool > &mask, const Array< Float > &sigma) |
Fit2D::ErrorTypes | residual (Array< Float > &resid, Array< Float > &model, const Array< Float > &data) |
Find the residuals to the fit. | |
Fit2D::ErrorTypes | residual (Array< Float > &resid, Array< Float > &model, const MaskedLattice< Float > &data) |
Fit2D::ErrorTypes | residual (Array< Float > &resid, Array< Float > &model, const Lattice< Float > &data) |
String | errorMessage () const |
If function fit failed, you will find a message here saying why it failed. | |
Vector< Double > | availableSolution () const |
Recover solution for either all model components or a specific one. | |
Vector< Double > | availableSolution (uInt which) const |
Vector< Double > | availableErrors () const |
The errors. | |
Vector< Double > | availableErrors (uInt which) const |
uInt | numberIterations () const |
The number of iterations that the fitter finished with. | |
Double | chiSquared () const |
The chi squared of the fit. | |
uInt | numberPoints () const |
The number of points used for the last fit. | |
Fit2D::Types | type (uInt which) |
Find type of specific model. | |
Static Public Member Functions | |
static Vector< Bool > | convertMask (const String fixedmask, Fit2D::Types type) |
Convert mask from a string to a vector. | |
static uInt | nParameters (Fit2D::Types type) |
Return number of parameters for this type of model. | |
static String | type (Fit2D::Types type) |
Return type as a string. | |
static Fit2D::Types | type (const String &type) |
Return string type as enum (min match) | |
static Double | paToGauss2D (Double pa) |
Convert p.a. | |
static Double | paFromGauss2D (Double pa) |
Convert p.a. | |
Private Member Functions | |
Fit2D::ErrorTypes | fitData (const Vector< Double > &values, const Matrix< Double > &pos, const Vector< Double > &sigma) |
Vector< Double > | availableSolution (uInt &iStart, uInt which) const |
Returns available (adjustable + fixed) solution for model of interest and tells you where it began in the full solution vector Does no axial ratio nor position angle conversions from direct fit solution vector. | |
Vector< Double > | availableErrors (uInt &iStart, uInt which) const |
Vector< Double > | getParams (uInt which) const |
void | setParams (const Vector< Double > ¶ms, uInt which) |
Bool | includeIt (Float value, const Vector< Float > &range, Int includeIt) const |
Bool | selectData (Matrix< Double > &pos, Vector< Double > &values, Vector< Double > &weights, const Array< Float > &pixels, const Array< Bool > &mask, const Array< Float > &sigma) |
void | piRange (Double &pa) const |
Private Attributes | |
LogIO | itsLogger |
Bool | itsValid |
Bool | itsValidSolution |
Bool | itsHasSigma |
Bool | itsInclude |
Vector< Float > | itsPixelRange |
CompoundFunction< AutoDiff < Double > > | itsFunction |
NonLinearFitLM< Double > | itsFitter |
Vector< Double > | itsSolution |
Vector< Double > | itsErrors |
Double | itsChiSquared |
String | itsErrorMessage |
uInt | itsNumberPoints |
Vector< uInt > | itsTypeList |
Fit 2-D objects to 2-D Lattices or Arrays.
Public interface
This class allows you to fit different types of 2-D models to either Lattices or Arrays. These must be 2 dimensional; for Lattices, the appropriate 2-D Lattice can be made with the SubLattice class.
You may fit more than one model simultaneously to the data. Models are added with the addModel method. With this method, you also specify the initial guesses of the parameters of the model. Any parameters involving coordinates are expected in zero-relative absolute pixel coordinates (e.g. the centre of a model). Additionally with the addModel method, you may specify which parameters are to be held fixed during the fitting process. This is done with the parameterMask Vector which is in the same order as the parameter Vector. A value of True indicates the parameter will be fitted for. Presently, when you say fix the minor axis, you really end up fixing the axial ratio (internals). I don't have a solution for this presently.
For Gaussians, the parameter Vector (input or output) consists, in order, of the peak, x location, y location, FWHM of major axis, FWHM of minor axis, and position angle of the major axis (in radians). The position angle is positive +x to +y in the pixel coordinate system ([0,0] in center of image) and in the range -2pi to 2pi. When the solution is recovered, the position angle will be in the range 0 to pi.
enum casa::Fit2D::Types |
casa::Fit2D::Fit2D | ( | LogIO & | logger | ) | [explicit] |
Constructor.
Destructor.
casa::Fit2D::Fit2D | ( | const Fit2D & | other | ) |
Copy constructor.
Uses copy semantics except for the logger for which a reference copy is made
uInt casa::Fit2D::addModel | ( | Fit2D::Types | type, |
const Vector< Double > & | parameters, | ||
const Vector< Bool > & | parameterMask | ||
) |
Add a model to the list to be simultaneously fit and return its index.
Specify the initial guesses for the model and a mask indicating whether the parameter is fixed (False) during the fit or not. Returns the the model number added (0, 1, 2 etc)
uInt casa::Fit2D::addModel | ( | Fit2D::Types | type, |
const Vector< Double > & | parameters | ||
) |
Vector<Double> casa::Fit2D::availableErrors | ( | ) | const |
The errors.
All available parameters (fixed and adjustable) are included in the error vectors. Unsolved for parameters will have error 0.
Vector<Double> casa::Fit2D::availableErrors | ( | uInt | which | ) | const |
Vector<Double> casa::Fit2D::availableErrors | ( | uInt & | iStart, |
uInt | which | ||
) | const [private] |
Vector<Double> casa::Fit2D::availableSolution | ( | ) | const |
Recover solution for either all model components or a specific one.
These functions will return an empty vector if there is no valid solution. All available parameters (fixed and adjustable) are included in the solution vectors.
Vector<Double> casa::Fit2D::availableSolution | ( | uInt | which | ) | const |
Vector<Double> casa::Fit2D::availableSolution | ( | uInt & | iStart, |
uInt | which | ||
) | const [private] |
Returns available (adjustable + fixed) solution for model of interest and tells you where it began in the full solution vector Does no axial ratio nor position angle conversions from direct fit solution vector.
Double casa::Fit2D::chiSquared | ( | ) | const |
The chi squared of the fit.
Returns 0 if fit has been done.
static Vector<Bool> casa::Fit2D::convertMask | ( | const String | fixedmask, |
Fit2D::Types | type | ||
) | [static] |
Convert mask from a string to a vector.
The string gives the parameters to keep fixed in the fit (f (flux), x (x position), y (y position), a (FWHM major axis), b (FWHM minor axis), p (position angle)
String casa::Fit2D::errorMessage | ( | ) | const |
If function fit failed, you will find a message here saying why it failed.
Vector<Double> casa::Fit2D::estimate | ( | Fit2D::Types | type, |
const MaskedLattice< Float > & | data | ||
) |
Determine an initial estimate for the solution of the specified model type to the given data - no compound models are allowable in this function.
If you have specified an include or exclude pixel range to the fitter, that will be honoured. This function does not interact with the addModel function. Returns a zero length vector if it fails to make an estimate.
Vector<Double> casa::Fit2D::estimate | ( | Fit2D::Types | type, |
const Lattice< Float > & | data | ||
) |
Vector<Double> casa::Fit2D::estimate | ( | Fit2D::Types | type, |
const Array< Float > & | data | ||
) |
Vector<Double> casa::Fit2D::estimate | ( | Fit2D::Types | type, |
const Array< Float > & | data, | ||
const Array< Bool > & | mask | ||
) |
Fit2D::ErrorTypes casa::Fit2D::fit | ( | const MaskedLattice< Float > & | data, |
const Lattice< Float > & | sigma | ||
) |
Do the fit.
Returns an enum value to tell you what happened if the fit failed for some reasons. A message can also be found with function errorMessage if the fit was not successful. For Array(i,j) i is x and j is y
Fit2D::ErrorTypes casa::Fit2D::fit | ( | const Lattice< Float > & | data, |
const Lattice< Float > & | sigma | ||
) |
Fit2D::ErrorTypes casa::Fit2D::fit | ( | const Array< Float > & | data, |
const Array< Float > & | sigma | ||
) |
Fit2D::ErrorTypes casa::Fit2D::fit | ( | const Array< Float > & | data, |
const Array< Bool > & | mask, | ||
const Array< Float > & | sigma | ||
) |
Fit2D::ErrorTypes casa::Fit2D::fitData | ( | const Vector< Double > & | values, |
const Matrix< Double > & | pos, | ||
const Vector< Double > & | sigma | ||
) | [private] |
Vector<Double> casa::Fit2D::getParams | ( | uInt | which | ) | const [private] |
Bool casa::Fit2D::includeIt | ( | Float | value, |
const Vector< Float > & | range, | ||
Int | includeIt | ||
) | const [inline, private] |
Definition at line 307 of file Fit2D.h.
References casa::False, and casa::True.
uInt casa::Fit2D::nModels | ( | ) | const |
Recover number of models.
static uInt casa::Fit2D::nParameters | ( | Fit2D::Types | type | ) | [static] |
Return number of parameters for this type of model.
uInt casa::Fit2D::numberIterations | ( | ) | const |
The number of iterations that the fitter finished with.
uInt casa::Fit2D::numberPoints | ( | ) | const |
The number of points used for the last fit.
Assignment operator.
Uses copy semantics except for the logger for which a reference copy is made
static Double casa::Fit2D::paFromGauss2D | ( | Double | pa | ) | [inline, static] |
Convert p.a.
(radians) from positive +y -> -x (Gaussian2D) to positive +x -> +y (Fit2D)
Definition at line 263 of file Fit2D.h.
References casa::C::pi_2.
static Double casa::Fit2D::paToGauss2D | ( | Double | pa | ) | [inline, static] |
Convert p.a.
(radians) from positive +x -> +y (Fit2D) to positive +y -> -x (Gaussian2D)
Definition at line 259 of file Fit2D.h.
References casa::C::pi_2.
void casa::Fit2D::piRange | ( | Double & | pa | ) | const [private] |
void casa::Fit2D::resetRange | ( | ) |
Fit2D::ErrorTypes casa::Fit2D::residual | ( | Array< Float > & | resid, |
Array< Float > & | model, | ||
const Array< Float > & | data | ||
) |
Find the residuals to the fit.
Fit2D::ErrorTypes casa::Fit2D::residual | ( | Array< Float > & | resid, |
Array< Float > & | model, | ||
const MaskedLattice< Float > & | data | ||
) |
Fit2D::ErrorTypes casa::Fit2D::residual | ( | Array< Float > & | resid, |
Array< Float > & | model, | ||
const Lattice< Float > & | data | ||
) |
Bool casa::Fit2D::selectData | ( | Matrix< Double > & | pos, |
Vector< Double > & | values, | ||
Vector< Double > & | weights, | ||
const Array< Float > & | pixels, | ||
const Array< Bool > & | mask, | ||
const Array< Float > & | sigma | ||
) | [private] |
void casa::Fit2D::setExcludeRange | ( | Double | minVal, |
Double | maxVal | ||
) |
void casa::Fit2D::setIncludeRange | ( | Double | minVal, |
Double | maxVal | ||
) |
Set a pixel selection range.
When the fit is done, only pixels in the specified range are included/excluded. Only the last call of either of these will be active.
void casa::Fit2D::setParams | ( | const Vector< Double > & | params, |
uInt | which | ||
) | [private] |
static String casa::Fit2D::type | ( | Fit2D::Types | type | ) | [static] |
Return type as a string.
static Fit2D::Types casa::Fit2D::type | ( | const String & | type | ) | [static] |
Return string type as enum (min match)
Fit2D::Types casa::Fit2D::type | ( | uInt | which | ) |
Find type of specific model.
Double casa::Fit2D::itsChiSquared [private] |
String casa::Fit2D::itsErrorMessage [private] |
Vector<Double> casa::Fit2D::itsErrors [private] |
NonLinearFitLM<Double> casa::Fit2D::itsFitter [private] |
CompoundFunction<AutoDiff<Double> > casa::Fit2D::itsFunction [private] |
Bool casa::Fit2D::itsHasSigma [private] |
Bool casa::Fit2D::itsInclude [private] |
LogIO casa::Fit2D::itsLogger [mutable, private] |
uInt casa::Fit2D::itsNumberPoints [private] |
Vector<Float> casa::Fit2D::itsPixelRange [private] |
Vector<Double> casa::Fit2D::itsSolution [private] |
Vector<uInt> casa::Fit2D::itsTypeList [private] |
Bool casa::Fit2D::itsValid [private] |
Bool casa::Fit2D::itsValidSolution [private] |