LSST Applications g0265f82a02+0e5473021a,g02d81e74bb+0dd8ce4237,g1470d8bcf6+3ea6592b6f,g2079a07aa2+86d27d4dc4,g2305ad1205+5ca4c0b359,g295015adf3+d10818ec9d,g2a9a014e59+6f9be1b9cd,g2bbee38e9b+0e5473021a,g337abbeb29+0e5473021a,g3ddfee87b4+703ba97ebf,g487adcacf7+4fa16da234,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+ffa42b374e,g5a732f18d5+53520f316c,g64a986408d+0dd8ce4237,g858d7b2824+0dd8ce4237,g8a8a8dda67+585e252eca,g99cad8db69+d39438377f,g9ddcbc5298+9a081db1e4,ga1e77700b3+15fc3df1f7,ga8c6da7877+f1d96605c8,gb0e22166c9+60f28cb32d,gb6a65358fc+0e5473021a,gba4ed39666+c2a2e4ac27,gbb8dafda3b+e5339d463f,gc120e1dc64+da31e9920e,gc28159a63d+0e5473021a,gcf0d15dbbd+703ba97ebf,gdaeeff99f8+f9a426f77a,ge6526c86ff+889fc9d533,ge79ae78c31+0e5473021a,gee10cc3b42+585e252eca,gf18bd8381d+7268b93478,gff1a9f87cc+0dd8ce4237,w.2024.16
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
lsst::afw::table::SourceColumnViewT< RecordT > Class Template Reference

#include <Source.h>

Inheritance diagram for lsst::afw::table::SourceColumnViewT< RecordT >:
lsst::afw::table::ColumnViewT< RecordT > lsst::afw::table::BaseColumnView

Public Types

using Record = RecordT
 
using Table = typename RecordT::Table
 

Public Member Functions

ndarray::Array< double, 1 > getPsfInstFlux () const
 Get the value of the PsfFlux slot measurement.
 
ndarray::Array< double, 1 > getPsfInstFluxErr () const
 Get the uncertainty on the PsfFlux slot measurement.
 
ndarray::Array< double, 1 > getApInstFlux () const
 Get the value of the ApFlux slot measurement.
 
ndarray::Array< double, 1 > getApInstFluxErr () const
 Get the uncertainty on the ApFlux slot measurement.
 
ndarray::Array< double, 1 > getModelInstFlux () const
 Get the value of the ModelFlux slot measurement.
 
ndarray::Array< double, 1 > getModelInstFluxErr () const
 Get the uncertainty on the ModelFlux slot measurement.
 
ndarray::Array< double, 1 > getGaussianInstFlux () const
 Get the value of the GaussianFlux slot measurement.
 
ndarray::Array< double, 1 > getGaussianInstFluxErr () const
 Get the uncertainty on the GaussianFlux slot measurement.
 
ndarray::Array< double, 1 > getCalibInstFlux () const
 Get the value of the CalibFlux slot measurement.
 
ndarray::Array< double, 1 > getCalibInstFluxErr () const
 Get the uncertainty on the CalibFlux slot measurement.
 
ndarray::Array< double, 1 > const getX () const
 
ndarray::Array< double, 1 > const getY () const
 
ndarray::Array< double, 1 > const getIxx () const
 
ndarray::Array< double, 1 > const getIyy () const
 
ndarray::Array< double, 1 > const getIxy () const
 
 SourceColumnViewT (SourceColumnViewT const &)=default
 
 SourceColumnViewT (SourceColumnViewT &&)=default
 
SourceColumnViewToperator= (SourceColumnViewT const &)=default
 
SourceColumnViewToperator= (SourceColumnViewT &&)=default
 
 ~SourceColumnViewT ()=default
 
std::shared_ptr< TablegetTable () const
 Return the table that owns the records.
 
Schema getSchema () const
 Return the schema that defines the fields.
 
template<typename T >
ndarray::ArrayRef< T, 1 > const operator[] (Key< T > const &key) const
 Return a 1-d array corresponding to a scalar field (or subfield).
 
template<typename T >
ndarray::ArrayRef< T, 2, 1 > const operator[] (Key< Array< T > > const &key) const
 Return a 2-d array corresponding to an array field.
 
ndarray::result_of::vectorize< detail::FlagExtractor, ndarray::Array< Field< Flag >::Elementconst, 1 > >::type operator[] (Key< Flag > const &key) const
 Return a 1-d array expression corresponding to a flag bit.
 
ndarray::Array< double, 1 > const get_radians_array (Key< Angle > const &key) const
 Return an array column as a double array in radians.
 
BitsColumn getBits (std::vector< Key< Flag > > const &keys) const
 Return an integer array with the given Flag fields repacked into individual bits.
 
BitsColumn getAllBits () const
 Return an integer array with all Flag fields repacked into individual bits.
 

Static Public Member Functions

template<typename InputIterator >
static SourceColumnViewT make (std::shared_ptr< Table > const &table, InputIterator first, InputIterator last)
 Construct a BaseColumnView from an iterator range.
 
template<typename InputIterator >
static BaseColumnView make (std::shared_ptr< BaseTable > const &table, InputIterator first, InputIterator last)
 Construct a BaseColumnView from an iterator range.
 
template<typename InputIterator >
static bool isRangeContiguous (std::shared_ptr< BaseTable > const &table, InputIterator first, InputIterator last)
 Return true if the given record iterator range is continuous and the records all belong to the given table.
 

Protected Member Functions

 SourceColumnViewT (BaseColumnView const &base)
 

Detailed Description

template<typename RecordT>
class lsst::afw::table::SourceColumnViewT< RecordT >

Definition at line 421 of file Source.h.

Member Typedef Documentation

◆ Record

Definition at line 423 of file Source.h.

◆ Table

template<typename RecordT >
using lsst::afw::table::SourceColumnViewT< RecordT >::Table = typename RecordT::Table

Definition at line 424 of file Source.h.

Constructor & Destructor Documentation

◆ SourceColumnViewT() [1/3]

template<typename RecordT >
lsst::afw::table::SourceColumnViewT< RecordT >::SourceColumnViewT ( SourceColumnViewT< RecordT > const & )
default

◆ SourceColumnViewT() [2/3]

template<typename RecordT >
lsst::afw::table::SourceColumnViewT< RecordT >::SourceColumnViewT ( SourceColumnViewT< RecordT > && )
default

◆ ~SourceColumnViewT()

◆ SourceColumnViewT() [3/3]

template<typename RecordT >
lsst::afw::table::SourceColumnViewT< RecordT >::SourceColumnViewT ( BaseColumnView const & base)
inlineexplicitprotected

Definition at line 505 of file Source.h.

505: ColumnViewT<RecordT>(base) {}

Member Function Documentation

◆ get_radians_array()

ndarray::Array< double, 1 > const lsst::afw::table::BaseColumnView::get_radians_array ( Key< Angle > const & key) const
inherited

Return an array column as a double array in radians.

Definition at line 117 of file BaseColumnView.cc.

117 {
118 using DoubleArray = ndarray::Array<double, 1>;
119 using AngleArray = ndarray::Array<lsst::geom::Angle, 1>;
120 AngleArray angle_array = (*this)[key];
121 return ndarray::detail::ArrayAccess<DoubleArray>::construct(
122 reinterpret_cast<double *>(angle_array.getData()),
123 ndarray::detail::ArrayAccess<AngleArray>::getCore(angle_array)
124 );
125}

◆ getAllBits()

BitsColumn lsst::afw::table::BaseColumnView::getAllBits ( ) const
inherited

Return an integer array with all Flag fields repacked into individual bits.

The returned object contains both the int64 array and accessors to obtain a mask given a Key or field name.

Exceptions
pex::exceptions::LengthErrorif the schema has more than 64 Flag fields.

Definition at line 157 of file BaseColumnView.cc.

157 {
158 BitsColumn result(_impl->recordCount);
159 ExtractFlagItems func = {&result._items};
160 getSchema().forEach(func);
161 if (result._items.size() > sizeof(BitsColumn::SizeT)) {
162 throw LSST_EXCEPT(pex::exceptions::LengthError,
163 (boost::format("Too many Flag keys in schema; %d > %d.") % result._items.size() %
164 sizeof(BitsColumn::SizeT))
165 .str());
166 }
167 ndarray::ArrayRef<BitsColumn::SizeT, 1, 1> array = result._array.deep();
168 BitsColumn::SizeT const size = result._items.size(); // just for unsigned/signed comparisons
169 for (BitsColumn::SizeT i = 0; i < size; ++i) {
170 array |= (BitsColumn::SizeT(1) << i) * (*this)[result._items[i].key];
171 }
172 return result;
173}
py::object result
Definition _schema.cc:429
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition Exception.h:48
Schema getSchema() const
Return the schema that defines the fields.
void forEach(F &func) const
Apply a functor to each SchemaItem in the Schema.
Definition Schema.h:214

◆ getApInstFlux()

template<typename RecordT >
ndarray::Array< double, 1 > lsst::afw::table::SourceColumnViewT< RecordT >::getApInstFlux ( ) const
inline

Get the value of the ApFlux slot measurement.

Definition at line 439 of file Source.h.

439 {
440 return this->operator[](this->getTable()->getApFluxSlot().getMeasKey());
441 }
ndarray::ArrayRef< T, 1 > const operator[](Key< T > const &key) const
Return a 1-d array corresponding to a scalar field (or subfield).
std::shared_ptr< Table > getTable() const
Return the table that owns the records.

◆ getApInstFluxErr()

template<typename RecordT >
ndarray::Array< double, 1 > lsst::afw::table::SourceColumnViewT< RecordT >::getApInstFluxErr ( ) const
inline

Get the uncertainty on the ApFlux slot measurement.

Definition at line 443 of file Source.h.

443 {
444 return this->operator[](this->getTable()->getApFluxSlot().getErrKey());
445 }

◆ getBits()

BitsColumn lsst::afw::table::BaseColumnView::getBits ( std::vector< Key< Flag > > const & keys) const
inherited

Return an integer array with the given Flag fields repacked into individual bits.

The returned object contains both the int64 array and accessors to obtain a mask given a Key or field name.

Exceptions
pex::exceptions::LengthErrorif keys.size() > 64

Definition at line 127 of file BaseColumnView.cc.

127 {
128 BitsColumn result(_impl->recordCount);
129 ndarray::ArrayRef<BitsColumn::SizeT, 1, 1> array = result._array.deep();
130 if (keys.size() > sizeof(BitsColumn::SizeT)) {
131 throw LSST_EXCEPT(pex::exceptions::LengthError,
132 (boost::format("Too many keys passed to getBits(); %d > %d.") % keys.size() %
133 sizeof(BitsColumn::SizeT))
134 .str());
135 }
136 BitsColumn::SizeT const size = keys.size(); // just for unsigned/signed comparisons
137 for (BitsColumn::SizeT i = 0; i < size; ++i) {
138 array |= (BitsColumn::SizeT(1) << i) * (*this)[keys[i]];
139 result._items.push_back(getSchema().find(keys[i]));
140 }
141 return result;
142}
SchemaItem< T > find(std::string const &name) const
Find a SchemaItem in the Schema by name.
Definition Schema.cc:467

◆ getCalibInstFlux()

template<typename RecordT >
ndarray::Array< double, 1 > lsst::afw::table::SourceColumnViewT< RecordT >::getCalibInstFlux ( ) const
inline

Get the value of the CalibFlux slot measurement.

Definition at line 466 of file Source.h.

466 {
467 return this->operator[](this->getTable()->getCalibFluxSlot().getMeasKey());
468 }

◆ getCalibInstFluxErr()

template<typename RecordT >
ndarray::Array< double, 1 > lsst::afw::table::SourceColumnViewT< RecordT >::getCalibInstFluxErr ( ) const
inline

Get the uncertainty on the CalibFlux slot measurement.

Definition at line 470 of file Source.h.

470 {
471 return this->operator[](this->getTable()->getCalibFluxSlot().getErrKey());
472 }

◆ getGaussianInstFlux()

template<typename RecordT >
ndarray::Array< double, 1 > lsst::afw::table::SourceColumnViewT< RecordT >::getGaussianInstFlux ( ) const
inline

Get the value of the GaussianFlux slot measurement.

Definition at line 457 of file Source.h.

457 {
458 return this->operator[](this->getTable()->getGaussianFluxSlot().getMeasKey());
459 }

◆ getGaussianInstFluxErr()

template<typename RecordT >
ndarray::Array< double, 1 > lsst::afw::table::SourceColumnViewT< RecordT >::getGaussianInstFluxErr ( ) const
inline

Get the uncertainty on the GaussianFlux slot measurement.

Definition at line 461 of file Source.h.

461 {
462 return this->operator[](this->getTable()->getGaussianFluxSlot().getErrKey());
463 }

◆ getIxx()

template<typename RecordT >
ndarray::Array< double, 1 > const lsst::afw::table::SourceColumnViewT< RecordT >::getIxx ( ) const
inline

Definition at line 481 of file Source.h.

481 {
482 return this->operator[](this->getTable()->getShapeSlot().getMeasKey().getIxx());
483 }
ndarray::Array< double, 1 > const getIxx() const
Definition Source.h:481

◆ getIxy()

template<typename RecordT >
ndarray::Array< double, 1 > const lsst::afw::table::SourceColumnViewT< RecordT >::getIxy ( ) const
inline

Definition at line 487 of file Source.h.

487 {
488 return this->operator[](this->getTable()->getShapeSlot().getMeasKey().getIxy());
489 }
ndarray::Array< double, 1 > const getIxy() const
Definition Source.h:487

◆ getIyy()

template<typename RecordT >
ndarray::Array< double, 1 > const lsst::afw::table::SourceColumnViewT< RecordT >::getIyy ( ) const
inline

Definition at line 484 of file Source.h.

484 {
485 return this->operator[](this->getTable()->getShapeSlot().getMeasKey().getIyy());
486 }
ndarray::Array< double, 1 > const getIyy() const
Definition Source.h:484

◆ getModelInstFlux()

template<typename RecordT >
ndarray::Array< double, 1 > lsst::afw::table::SourceColumnViewT< RecordT >::getModelInstFlux ( ) const
inline

Get the value of the ModelFlux slot measurement.

Definition at line 448 of file Source.h.

448 {
449 return this->operator[](this->getTable()->getModelFluxSlot().getMeasKey());
450 }

◆ getModelInstFluxErr()

template<typename RecordT >
ndarray::Array< double, 1 > lsst::afw::table::SourceColumnViewT< RecordT >::getModelInstFluxErr ( ) const
inline

Get the uncertainty on the ModelFlux slot measurement.

Definition at line 452 of file Source.h.

452 {
453 return this->operator[](this->getTable()->getModelFluxSlot().getErrKey());
454 }

◆ getPsfInstFlux()

template<typename RecordT >
ndarray::Array< double, 1 > lsst::afw::table::SourceColumnViewT< RecordT >::getPsfInstFlux ( ) const
inline

Get the value of the PsfFlux slot measurement.

Definition at line 430 of file Source.h.

430 {
431 return this->operator[](this->getTable()->getPsfFluxSlot().getMeasKey());
432 }

◆ getPsfInstFluxErr()

template<typename RecordT >
ndarray::Array< double, 1 > lsst::afw::table::SourceColumnViewT< RecordT >::getPsfInstFluxErr ( ) const
inline

Get the uncertainty on the PsfFlux slot measurement.

Definition at line 434 of file Source.h.

434 {
435 return this->operator[](this->getTable()->getPsfFluxSlot().getErrKey());
436 }

◆ getSchema()

Schema lsst::afw::table::BaseColumnView::getSchema ( ) const
inlineinherited

Return the schema that defines the fields.

Definition at line 89 of file BaseColumnView.h.

89{ return getTable()->getSchema(); }
std::shared_ptr< BaseTable > getTable() const
Return the table that owns the records.

◆ getTable()

template<typename RecordT >
std::shared_ptr< Table > lsst::afw::table::ColumnViewT< RecordT >::getTable ( ) const
inlineinherited

Return the table that owns the records.

Definition at line 179 of file BaseColumnView.h.

179 {
180 return std::static_pointer_cast<Table>(BaseColumnView::getTable());
181 }

◆ getX()

template<typename RecordT >
ndarray::Array< double, 1 > const lsst::afw::table::SourceColumnViewT< RecordT >::getX ( ) const
inline

Definition at line 474 of file Source.h.

474 {
475 return this->operator[](this->getTable()->getCentroidSlot().getMeasKey().getX());
476 }
ndarray::Array< double, 1 > const getX() const
Definition Source.h:474

◆ getY()

template<typename RecordT >
ndarray::Array< double, 1 > const lsst::afw::table::SourceColumnViewT< RecordT >::getY ( ) const
inline

Definition at line 477 of file Source.h.

477 {
478 return this->operator[](this->getTable()->getCentroidSlot().getMeasKey().getY());
479 }
ndarray::Array< double, 1 > const getY() const
Definition Source.h:477

◆ isRangeContiguous()

template<typename InputIterator >
bool lsst::afw::table::BaseColumnView::isRangeContiguous ( std::shared_ptr< BaseTable > const & table,
InputIterator first,
InputIterator last )
staticinherited

Return true if the given record iterator range is continuous and the records all belong to the given table.

This tests exactly the same requiremetns needed to construct a column view, so if this test succeeds, BaseColumnView::make should as well.

Definition at line 221 of file BaseColumnView.h.

222 {
223 if (first == last) return true;
224 Schema schema = table->getSchema();
225 std::size_t recordSize = schema.getRecordSize();
226 std::size_t recordCount = 1;
227 void* buf = first->_data;
228 ndarray::Manager::Ptr manager = first->_manager;
229 char* expected = reinterpret_cast<char*>(buf) + recordSize;
230 for (++first; first != last; ++first, ++recordCount, expected += recordSize) {
231 if (first->_data != expected || first->_manager != manager) {
232 return false;
233 }
234 }
235 return true;
236}

◆ make() [1/2]

template<typename InputIterator >
BaseColumnView lsst::afw::table::BaseColumnView::make ( std::shared_ptr< BaseTable > const & table,
InputIterator first,
InputIterator last )
staticinherited

Construct a BaseColumnView from an iterator range.

The iterators must dereference to a reference or const reference to a record. If the record data is not contiguous in memory, throws lsst::pex::exceptions::RuntimeError.

Definition at line 200 of file BaseColumnView.h.

201 {
202 if (first == last) {
203 return BaseColumnView(table, 0, nullptr, ndarray::Manager::Ptr());
204 }
205 Schema schema = table->getSchema();
206 std::size_t recordSize = schema.getRecordSize();
207 std::size_t recordCount = 1;
208 void* buf = first->_data;
209 ndarray::Manager::Ptr manager = first->_manager;
210 char* expected = reinterpret_cast<char*>(buf) + recordSize;
211 for (++first; first != last; ++first, ++recordCount, expected += recordSize) {
212 if (first->_data != expected || first->_manager != manager) {
214 "Record data is not contiguous in memory.");
215 }
216 }
217 return BaseColumnView(table, recordCount, buf, manager);
218}
BaseColumnView(BaseColumnView const &)
Reports errors that are due to events beyond the control of the program.
Definition Runtime.h:104

◆ make() [2/2]

template<typename RecordT >
template<typename InputIterator >
static SourceColumnViewT lsst::afw::table::SourceColumnViewT< RecordT >::make ( std::shared_ptr< Table > const & table,
InputIterator first,
InputIterator last )
inlinestatic

Construct a BaseColumnView from an iterator range.

The iterators must dereference to a reference or const reference to a record. If the record data is not contiguous in memory, throws lsst::pex::exceptions::RuntimeError.

Definition at line 493 of file Source.h.

494 {
495 return SourceColumnViewT(BaseColumnView::make(table, first, last));
496 }
static BaseColumnView make(std::shared_ptr< BaseTable > const &table, InputIterator first, InputIterator last)
Construct a BaseColumnView from an iterator range.
SourceColumnViewT(SourceColumnViewT const &)=default

◆ operator=() [1/2]

template<typename RecordT >
SourceColumnViewT & lsst::afw::table::SourceColumnViewT< RecordT >::operator= ( SourceColumnViewT< RecordT > && )
default

◆ operator=() [2/2]

◆ operator[]() [1/3]

template<typename T >
ndarray::ArrayRef< T, 2, 1 > const lsst::afw::table::BaseColumnView::operator[] ( Key< Array< T > > const & key) const
inherited

Return a 2-d array corresponding to an array field.

Definition at line 84 of file BaseColumnView.cc.

84 {
85 if (!key.isValid()) {
86 throw LSST_EXCEPT(
87 pex::exceptions::LogicError,
88 "Key is not valid (if this is a SourceCatalog, make sure slot aliases have been set up).");
89 }
90 if (key.isVariableLength()) {
91 throw LSST_EXCEPT(pex::exceptions::LogicError, "Cannot get columns for variable-length array fields");
92 }
93 return ndarray::external(
94 reinterpret_cast<T *>(reinterpret_cast<char *>(_impl->buf) + key.getOffset()),
95 ndarray::makeVector(_impl->recordCount, key.getSize()),
96 ndarray::makeVector(_impl->table->getSchema().getRecordSize() / sizeof(T), std::size_t(1)),
97 _impl->manager);
98}
std::shared_ptr< BaseTable > table

◆ operator[]() [2/3]

ndarray::result_of::vectorize< detail::FlagExtractor, ndarray::Array< Field< Flag >::Elementconst, 1 > >::type lsst::afw::table::BaseColumnView::operator[] ( Key< Flag > const & key) const
inherited

Return a 1-d array expression corresponding to a flag bit.

In C++, the return value is a lazy ndarray expression template that performs the bitwise & operation on every element when that element is requested. In Python, the result will be copied into a bool NumPy array.

Definition at line 101 of file BaseColumnView.cc.

101 {
102 if (!key.isValid()) {
103 throw LSST_EXCEPT(
104 pex::exceptions::LogicError,
105 "Key is not valid (if this is a SourceCatalog, make sure slot aliases have been set up).");
106 }
107 return ndarray::vectorize(detail::FlagExtractor(key),
108 ndarray::Array<Field<Flag>::Element const, 1>(ndarray::external(
109 reinterpret_cast<Field<Flag>::Element *>(
110 reinterpret_cast<char *>(_impl->buf) + key.getOffset()),
111 ndarray::makeVector(_impl->recordCount),
112 ndarray::makeVector(_impl->table->getSchema().getRecordSize() /
113 sizeof(Field<Flag>::Element)),
114 _impl->manager)));
115}

◆ operator[]() [3/3]

template<typename T >
ndarray::ArrayRef< T, 1 > const lsst::afw::table::BaseColumnView::operator[] ( Key< T > const & key) const
inherited

Return a 1-d array corresponding to a scalar field (or subfield).

Definition at line 71 of file BaseColumnView.cc.

71 {
72 if (!key.isValid()) {
73 throw LSST_EXCEPT(
74 pex::exceptions::LogicError,
75 "Key is not valid (if this is a SourceCatalog, make sure slot aliases have been set up).");
76 }
77 return ndarray::external(reinterpret_cast<T *>(reinterpret_cast<char *>(_impl->buf) + key.getOffset()),
78 ndarray::makeVector(_impl->recordCount),
79 ndarray::makeVector(_impl->table->getSchema().getRecordSize() / sizeof(T)),
80 _impl->manager);
81}

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