A thin C++ wrapper around astrometry.net's solver_t struct.
More...
#include <astrometry_net.h>
|
| Solver () |
|
| ~Solver () |
|
lsst::afw::table::SimpleCatalog | getCatalog (std::vector< index_t *> inds, lsst::afw::geom::SpherePoint const &ctrCoord, lsst::afw::geom::Angle const &radius, const char *idCol, std::vector< std::string > const &filterNameList, std::vector< std::string > const &magColList, std::vector< std::string > const &magErrColList, const char *starGalCol, const char *varCol, bool uniqueIds=true) |
| Load reference objects in a region of the sky described by a center coordinate and a radius. More...
|
|
std::shared_ptr< lsst::daf::base::PropertyList > | getSolveStats () const |
|
std::shared_ptr< lsst::afw::geom::SkyWcs > | getWcs () |
|
bool | didSolve () const |
|
void | run (double cpulimit) |
|
std::pair< double, double > | getQuadSizeRangeArcsec () const |
|
void | addIndices (std::vector< index_t *> inds) |
| Add indices to the solver. More...
|
|
void | setParity (bool flipped) |
| Set parity to flipped (if true) or normal (if false) More...
|
|
void | setMatchThreshold (double threshold) |
|
void | setPixelScaleRange (double low, double high) |
|
void | setRaDecRadius (double ra, double dec, double radius_deg) |
|
void | setImageSize (int width, int height) |
|
void | setMaxStars (int maxStars) |
|
void | setStars (lsst::afw::table::SourceCatalog const &srcs, int x0, int y0) |
|
A thin C++ wrapper around astrometry.net's solver_t struct.
This provide memory management and methods used by LSST.
Definition at line 119 of file astrometry_net.h.
◆ Solver()
lsst::meas::extensions::astrometryNet::Solver::Solver |
( |
| ) |
|
|
explicit |
◆ ~Solver()
lsst::meas::extensions::astrometryNet::Solver::~Solver |
( |
| ) |
|
Definition at line 65 of file astrometry_net.cc.
68 starxy_free(_solver->fieldxy);
69 _solver->fieldxy = NULL;
◆ addIndices()
void lsst::meas::extensions::astrometryNet::Solver::addIndices |
( |
std::vector< index_t *> |
inds | ) |
|
Add indices to the solver.
The indices are bare pointers whose memory is managed by the caller. Typically the indices are owned by a MultiIndex object owned by the caller.
Definition at line 181 of file astrometry_net.cc.
183 pind != inds.
end(); ++pind) {
184 detail::IndexManager man(*pind);
186 if (_solver->use_radec) {
187 double ra,
dec,radius;
188 xyzarr2radecdeg(_solver->centerxyz, &ra, &dec);
189 radius = distsq2deg(_solver->r2);
190 if (!index_is_within_range(man.index, ra, dec, radius)) {
197 solver_get_quad_size_range_arcsec(_solver.
get(), &qlo, &qhi);
198 if (!index_overlaps_scale_range(man.index, qlo, qhi)) {
203 if (index_reload(man.index)) {
205 "Failed to index_reload() an astrometry_net_data index file -- out of file descriptors?");
208 solver_add_index(_solver.
get(), man.index);
Reports errors in external input/output operations.
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
◆ didSolve()
bool lsst::meas::extensions::astrometryNet::Solver::didSolve |
( |
| ) |
const |
|
inline |
◆ getCatalog()
Load reference objects in a region of the sky described by a center coordinate and a radius.
- Parameters
-
[in] | inds | list of star kd-trees from astrometry.net |
[in] | ctrCoord | center of search region |
[in] | radius | search radius |
[in] | idCol | name of ID column in astrometry.net data |
[in] | filterNameList | names of filters in astrometry.net data |
[in] | magColList | names of magnitude columns in astrometry.net data |
[in] | magErrColList | names of magnitude uncertainty (sigma) columns in astrometry.net data |
[in] | starGalCol | name of "starGal" column (true if object is a star) in astrometry.net data |
[in] | varCol | name of "var" column (true if brightness is variable) in astrometry.net data |
[in] | uniqueIds | if true then only return unique IDs (the first of each seen) |
Returned schema:
- id
- coord: ICRS sky position (an lsst::afw::geom::SpherePoint)
- centroid: centroid on some exposure, if relevant (an lsst::afw::geom::Point2D); returned value is not set
- hasCentroid: if true then centroid has been set; returned value is false
- filterName_flux: flux in the specified filter (double)
- filterName_fluxErr: flux uncertainty in the specified filter (double)
- resolved (if starGalCol specified): true if object is not resolved
- variable (if varCol specified): true if brightness is variable
- photometric: true if not resolved (or starGalCol blank) and not variable (or varCol blank); note that if starGalCol and varCol both blank then all objects are claimed to be photometric
Definition at line 72 of file astrometry_net.cc.
84 if ((filterNameList.
size() != magColList.
size()) || (filterNameList.
size() != magErrColList.
size())) {
86 "Filter name, mag column, and mag error column vectors must be the same length.");
89 for (
size_t i=0; i<filterNameList.
size(); ++i) {
90 astrometryNet::detail::MagColInfo mc;
91 mc.filterName = filterNameList[i];
92 mc.magCol = magColList[i];
93 mc.magErrCol = magErrColList[i];
97 idCol, magColInfoList, starGalCol, varCol, uniqueIds);
lsst::afw::table::SimpleCatalog getCatalogImpl(std::vector< index_t *> inds, lsst::afw::geom::SpherePoint const &ctrCoord, lsst::afw::geom::Angle const &radius, const char *idCol, std::vector< MagColInfo > const &magColInfoList, const char *starGalCol, const char *varCol, bool uniqueIds=true)
Implementation for index_t::getCatalog method.
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Reports invalid arguments.
◆ getQuadSizeRangeArcsec()
std::pair<double, double> lsst::meas::extensions::astrometryNet::Solver::getQuadSizeRangeArcsec |
( |
| ) |
const |
|
inline |
Definition at line 176 of file astrometry_net.h.
178 solver_get_quad_size_range_arcsec(_solver.
get(), &qlo, &qhi);
◆ getSolveStats()
Definition at line 100 of file astrometry_net.cc.
102 auto qa = std::make_shared<daf::base::PropertyList>();
104 qa->set(
"meas_astrom*an*n_tried", _solver->numtries);
105 qa->set(
"meas_astrom*an*n_matched", _solver->nummatches);
106 qa->set(
"meas_astrom*an*n_scaleok", _solver->numscaleok);
107 qa->set(
"meas_astrom*an*n_cxdxcut", _solver->num_cxdx_skipped);
108 qa->set(
"meas_astrom*an*n_meanxcut", _solver->num_meanx_skipped);
109 qa->set(
"meas_astrom*an*n_radeccut", _solver->num_radec_skipped);
110 qa->set(
"meas_astrom*an*n_scalecut", _solver->num_abscale_skipped);
111 qa->set(
"meas_astrom*an*n_verified", _solver->num_verified);
112 qa->set(
"meas_astrom*an*time_used", _solver->timeused);
113 qa->set(
"meas_astrom*an*best_logodds", _solver->best_logodds);
114 if (_solver->best_index) {
115 index_t* ind = _solver->best_index;
116 qa->set(
"meas_astrom*an*best_index*id", ind->indexid);
117 qa->set(
"meas_astrom*an*best_index*hp", ind->healpix);
118 qa->set(
"meas_astrom*an*best_index*nside", ind->hpnside);
119 qa->set(
"meas_astrom*an*best_index*name",
std::string(ind->indexname));
121 if (_solver->have_best_match) {
122 MatchObj* mo = &(_solver->best_match);
124 for (
int i=1; i<mo->dimquads; i++)
126 qa->set(
"meas_astrom*an*best_match*starinds", s);
127 qa->set(
"meas_astrom*an*best_match*coderr",
std::sqrt(mo->code_err));
128 qa->set(
"meas_astrom*an*best_match*nmatch", mo->nmatch);
129 qa->set(
"meas_astrom*an*best_match*ndistract", mo->ndistractor);
130 qa->set(
"meas_astrom*an*best_match*nconflict", mo->nconflict);
131 qa->set(
"meas_astrom*an*best_match*nfield", mo->nfield);
132 qa->set(
"meas_astrom*an*best_match*nindex", mo->nindex);
133 qa->set(
"meas_astrom*an*best_match*nbest", mo->nbest);
134 qa->set(
"meas_astrom*an*best_match*logodds", mo->logodds);
135 qa->set(
"meas_astrom*an*best_match*parity", mo->parity ? 0 : 1);
136 qa->set(
"meas_astrom*an*best_match*nobjs", mo->objs_tried);
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
◆ getWcs()
Definition at line 141 of file astrometry_net.cc.
142 MatchObj* match = solver_get_best_match(_solver.
get());
145 tan_t*
wcs = &(match->wcstan);
150 Eigen::Matrix2d cdMatrix;
151 for (
int i = 0; i < 2; ++i) {
152 for (
int j = 0; j < 2; ++j) {
153 cdMatrix(i, j) = wcs->cd[i][j];
table::PointKey< double > crpix
table::PointKey< double > crval
table::Key< table::Array< std::uint8_t > > wcs
Point< double, 2 > Point2D
AngleUnit constexpr degrees
constant with units of degrees
std::shared_ptr< SkyWcs > makeSkyWcs(daf::base::PropertySet &metadata, bool strip=false)
Construct a SkyWcs from FITS keywords.
lsst::geom::SpherePoint SpherePoint
◆ run()
void lsst::meas::extensions::astrometryNet::Solver::run |
( |
double |
cpulimit | ) |
|
Definition at line 159 of file astrometry_net.cc.
160 solver_log_params(_solver.
get());
161 struct timer_baton tt;
163 tt.s = _solver.
get();
164 tt.timelimit = cpulimit;
165 _solver->userdata = &tt;
166 _solver->timer_callback = timer_callback;
168 solver_run(_solver.
get());
170 _solver->timer_callback = NULL;
171 _solver->userdata = NULL;
◆ setImageSize()
void lsst::meas::extensions::astrometryNet::Solver::setImageSize |
( |
int |
width, |
|
|
int |
height |
|
) |
| |
Definition at line 212 of file astrometry_net.cc.
213 solver_set_field_bounds(_solver.
get(), 0, width, 0, height);
214 double hi =
hypot(width, height);
215 double lo = 0.1 *
std::min(width, height);
216 solver_set_quad_size_range(_solver.
get(), lo, hi);
◆ setMatchThreshold()
void lsst::meas::extensions::astrometryNet::Solver::setMatchThreshold |
( |
double |
threshold | ) |
|
|
inline |
◆ setMaxStars()
void lsst::meas::extensions::astrometryNet::Solver::setMaxStars |
( |
int |
maxStars | ) |
|
|
inline |
◆ setParity()
void lsst::meas::extensions::astrometryNet::Solver::setParity |
( |
bool |
flipped | ) |
|
|
inline |
Set parity to flipped (if true) or normal (if false)
Definition at line 193 of file astrometry_net.h.
194 _solver->parity = flipped ? PARITY_FLIP : PARITY_NORMAL;
◆ setPixelScaleRange()
void lsst::meas::extensions::astrometryNet::Solver::setPixelScaleRange |
( |
double |
low, |
|
|
double |
high |
|
) |
| |
|
inline |
Definition at line 201 of file astrometry_net.h.
202 _solver->funits_lower = low;
203 _solver->funits_upper = high;
◆ setRaDecRadius()
void lsst::meas::extensions::astrometryNet::Solver::setRaDecRadius |
( |
double |
ra, |
|
|
double |
dec, |
|
|
double |
radius_deg |
|
) |
| |
|
inline |
◆ setStars()
Definition at line 219 of file astrometry_net.cc.
221 starxy_free(_solver->fieldxy);
222 const size_t N = srcs.size();
223 starxy_t *starxy = starxy_new(N,
true,
false);
224 for (
size_t i=0; i<N; ++i) {
225 double const x = srcs[i].getX();
226 double const y = srcs[i].getY();
227 double const flux = srcs[i].getPsfInstFlux();
228 starxy_set(starxy, i, x - x0, y - y0);
229 starxy_set_flux(starxy, i, flux);
232 starxy_sort_by_flux(starxy);
234 starxy_free(solver_get_field(_solver.
get()));
235 solver_free_field(_solver.
get());
236 solver_set_field(_solver.
get(), starxy);
237 solver_reset_field_size(_solver.
get());
239 solver_preprocess_field(_solver.
get());
The documentation for this class was generated from the following files:
- /j/snowflake/release/lsstsw/stack/Linux64/meas_extensions_astrometryNet/18.1.0/include/lsst/meas/extensions/astrometryNet/astrometry_net.h
- /j/snowflake/release/lsstsw/stack/Linux64/meas_extensions_astrometryNet/18.1.0/src/astrometry_net.cc