LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
lsst::afw::table::CovarianceMatrixKey< T, N > Class Template Reference

#include <aggregates.h>

Inheritance diagram for lsst::afw::table::CovarianceMatrixKey< T, N >:
lsst::afw::table::FunctorKey< Eigen::Matrix< T, N, N > > lsst::afw::table::OutputFunctorKey< Eigen::Matrix< T, N, N > > lsst::afw::table::InputFunctorKey< Eigen::Matrix< T, N, N > >

Public Types

typedef std::vector< Key< T > > SigmaKeyArray
 
typedef std::vector< Key< T > > CovarianceKeyArray
 
typedef std::vector< std::string > NameArray
 

Public Member Functions

 CovarianceMatrixKey ()
 Construct an invalid instance; must assign before subsequent use. More...
 
 CovarianceMatrixKey (SigmaKeyArray const &sigma, CovarianceKeyArray const &cov=CovarianceKeyArray())
 Construct a from arrays of per-element Keys. More...
 
 CovarianceMatrixKey (SubSchema const &s, NameArray const &names)
 Construct from a subschema and an array of names for each parameter of the matrix. More...
 
virtual Eigen::Matrix< T, N, N > get (BaseRecord const &record) const
 Get a covariance matrix from the given record. More...
 
virtual void set (BaseRecord &record, Eigen::Matrix< T, N, N > const &value) const
 Set a covariance matrix in the given record (uses only the lower triangle of the given matrix) More...
 
getElement (BaseRecord const &record, int i, int j) const
 Return the element in row i and column j. More...
 
void setElement (BaseRecord &record, int i, int j, T value) const
 Set the element in row i and column j. More...
 
bool isValid () const
 Return True if all the constituent sigma Keys are valid. More...
 
bool operator== (CovarianceMatrixKey const &other) const
 Compare the FunctorKey for equality with another, using its constituent Keys. More...
 
bool operator!= (CovarianceMatrixKey const &other) const
 Compare the FunctorKey for equality with another, using its constituent Keys. More...
 
- Public Member Functions inherited from lsst::afw::table::OutputFunctorKey< Eigen::Matrix< T, N, N > >
virtual ~OutputFunctorKey ()
 
- Public Member Functions inherited from lsst::afw::table::InputFunctorKey< Eigen::Matrix< T, N, N > >
virtual ~InputFunctorKey ()
 

Static Public Member Functions

static CovarianceMatrixKey addFields (Schema &schema, std::string const &prefix, NameArray const &names, std::string const &unit, bool diagonalOnly=false)
 
static CovarianceMatrixKey addFields (Schema &schema, std::string const &prefix, NameArray const &names, NameArray const &units, bool diagonalOnly=false)
 

Private Attributes

SigmaKeyArray _sigma
 
CovarianceKeyArray _cov
 

Detailed Description

template<typename T, int N>
class lsst::afw::table::CovarianceMatrixKey< T, N >

Definition at line 332 of file aggregates.h.

Member Typedef Documentation

template<typename T, int N>
typedef std::vector< Key<T> > lsst::afw::table::CovarianceMatrixKey< T, N >::CovarianceKeyArray

Definition at line 336 of file aggregates.h.

template<typename T, int N>
typedef std::vector<std::string> lsst::afw::table::CovarianceMatrixKey< T, N >::NameArray

Definition at line 337 of file aggregates.h.

template<typename T, int N>
typedef std::vector< Key<T> > lsst::afw::table::CovarianceMatrixKey< T, N >::SigmaKeyArray

Definition at line 335 of file aggregates.h.

Constructor & Destructor Documentation

template<typename T, int N>
lsst::afw::table::CovarianceMatrixKey< T, N >::CovarianceMatrixKey ( )

Construct an invalid instance; must assign before subsequent use.

template<typename T, int N>
lsst::afw::table::CovarianceMatrixKey< T, N >::CovarianceMatrixKey ( SigmaKeyArray const &  sigma,
CovarianceKeyArray const &  cov = CovarianceKeyArray() 
)
explicit

Construct a from arrays of per-element Keys.

The sigma array Keys should point to the square root of the diagonal of the covariance matrix. The cov array Keys should point to the off-diagonal elements of the lower-triangle, packed first in rows, then in columns (or equivalently, in the upper-triangle, packed first in columns, then in rows). For a 4x4 matrix, the order is is:

* sigma[0]^2 cov[0] cov[1] cov[3]
* cov[0] sigma[1]^2 cov[2] cov[4]
* cov[1] cov[2] sigma[2]^2 cov[5]
* cov[3] cov[4] cov[5] sigma[3]^2
*

The cov array may also be empty, to indicate that no off-diagonal elements are stored, and should be set to zero. If not empty, the size of the cov matrix must be exactly n*(n-1)/2, where n is the size of the sigma matrix.

template<typename T, int N>
lsst::afw::table::CovarianceMatrixKey< T, N >::CovarianceMatrixKey ( SubSchema const &  s,
NameArray const &  names 
)

Construct from a subschema and an array of names for each parameter of the matrix.

The field names should match the following convention:

  • diagonal elements should have names like "p1Sigma", where "p1" is the name of the parameter, and should contain the square root of the variance in that parameter.
  • off-diagonal elements hould have names like "p1_p2_Cov", where "p1" and "p2" are names of parameters. For example, for the covariance matrix of a position, we'd look for "xSigma", "ySigma", and "x_y_Cov".

Member Function Documentation

template<typename T, int N>
static CovarianceMatrixKey lsst::afw::table::CovarianceMatrixKey< T, N >::addFields ( Schema schema,
std::string const &  prefix,
NameArray const &  names,
std::string const &  unit,
bool  diagonalOnly = false 
)
static

Add covariance matrix fields to a Schema, and return a CovarianceMatrixKey to manage them.

Parameters
[out]schemaSchema to add fields to.
[in]prefixString used to form the first part of all field names. Suffixes of the form '_xSigma' and '_x_y_Cov' will be added to form the full field names (using names={'x', 'y'} as an example).
[in]unitUnit for for sigma values (covariance matrix elements will be unit^2).
[in]namesVector of strings containing the names of the quantities the covariance matrix represents the uncertainty of.
[in]diagonalOnlyIf true, only create fields for the Sigma values.
template<typename T, int N>
static CovarianceMatrixKey lsst::afw::table::CovarianceMatrixKey< T, N >::addFields ( Schema schema,
std::string const &  prefix,
NameArray const &  names,
NameArray const &  units,
bool  diagonalOnly = false 
)
static

Add covariance matrix fields to a Schema, and return a CovarianceMatrixKey to manage them.

Parameters
[out]schemaSchema to add fields to.
[in]prefixString used to form the first part of all field names. Suffixes of the form '_xSigma' and '_x_y_Cov' will be added to form the full field names (using names={'x', 'y'} as an example).
[in]unitsVector of units for for sigma values (covariance matrix elements will have "{units[i]} {units[j]}" or "{units[i]}^2", depending on whether units[i] == units[j].
[in]namesVector of strings containing the names of the quantities the covariance matrix represents the uncertainty of.
[in]diagonalOnlyIf true, only create fields for the Sigma values.
template<typename T, int N>
virtual Eigen::Matrix<T,N,N> lsst::afw::table::CovarianceMatrixKey< T, N >::get ( BaseRecord const &  record) const
virtual

Get a covariance matrix from the given record.

Implements lsst::afw::table::OutputFunctorKey< Eigen::Matrix< T, N, N > >.

template<typename T, int N>
T lsst::afw::table::CovarianceMatrixKey< T, N >::getElement ( BaseRecord const &  record,
int  i,
int  j 
) const

Return the element in row i and column j.

template<typename T, int N>
bool lsst::afw::table::CovarianceMatrixKey< T, N >::isValid ( ) const

Return True if all the constituent sigma Keys are valid.

Note that if the only one or more off-diagonal keys are invalid, we assume that means those terms are zero, not that the whole FunctorKey is invalid.

template<typename T, int N>
bool lsst::afw::table::CovarianceMatrixKey< T, N >::operator!= ( CovarianceMatrixKey< T, N > const &  other) const
inline

Compare the FunctorKey for equality with another, using its constituent Keys.

Definition at line 445 of file aggregates.h.

445 { return !(*this == other); }
template<typename T, int N>
bool lsst::afw::table::CovarianceMatrixKey< T, N >::operator== ( CovarianceMatrixKey< T, N > const &  other) const

Compare the FunctorKey for equality with another, using its constituent Keys.

template<typename T, int N>
virtual void lsst::afw::table::CovarianceMatrixKey< T, N >::set ( BaseRecord record,
Eigen::Matrix< T, N, N > const &  value 
) const
virtual

Set a covariance matrix in the given record (uses only the lower triangle of the given matrix)

Implements lsst::afw::table::InputFunctorKey< Eigen::Matrix< T, N, N > >.

template<typename T, int N>
void lsst::afw::table::CovarianceMatrixKey< T, N >::setElement ( BaseRecord record,
int  i,
int  j,
value 
) const

Set the element in row i and column j.

Member Data Documentation

template<typename T, int N>
CovarianceKeyArray lsst::afw::table::CovarianceMatrixKey< T, N >::_cov
private

Definition at line 450 of file aggregates.h.

template<typename T, int N>
SigmaKeyArray lsst::afw::table::CovarianceMatrixKey< T, N >::_sigma
private

Definition at line 449 of file aggregates.h.


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