-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DM-41634: Add PixelMap subclass using AST mappings #15
Changes from all commits
08a7f4f
e5f2b52
064e686
4b51838
8278526
c7ff475
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
add_library(astrometry src/Astrometry.cpp src/PiecewiseMap.cpp src/PixelMapCollection.cpp src/SubMap.cpp | ||
src/Wcs.cpp src/PixelMap.cpp src/PolyMap.cpp src/TemplateMap.cpp src/YAMLCollector.cpp) | ||
|
||
target_include_directories(astrometry PUBLIC ${PROJECT_SOURCE_DIR}/astrometry/include) | ||
target_include_directories(astrometry PUBLIC ${PROJECT_SOURCE_DIR}/astrometry/include ${ASTSHIM_INCLUDES}) | ||
target_link_libraries(astrometry PUBLIC Eigen3::Eigen ${FFTW3_LIBRARIES} yaml-cpp gbutil) |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -17,6 +17,8 @@ | |
#ifdef USE_YAML | ||
#include "yaml-cpp/yaml.h" | ||
#endif | ||
#include "astshim.h" | ||
|
||
#include "Std.h" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is ugly in the original There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, it's not great, but we decided not to go through and change all the original code. New code is supposed to ignore this, but I forgot in the instance you commented on below. |
||
#include "LinearAlgebra.h" | ||
#include "Astrometry.h" | ||
|
@@ -332,5 +334,37 @@ namespace astrometry { | |
void operator=(const ColorTerm& rhs) = delete; | ||
|
||
}; | ||
|
||
class ASTMap: public PixelMap { | ||
// Class for using AST maps (via astshim) | ||
public: | ||
ASTMap(const ast::Mapping& mapping_, std::string name_=""): | ||
PixelMap(name_), mapping(mapping_.copy()) {} | ||
|
||
virtual PixelMap* duplicate() const; | ||
|
||
~ASTMap() = default; | ||
|
||
static string type() {return "AST";} | ||
|
||
void toWorld(double xpix, double ypix, | ||
double &xworld, double &yworld, | ||
double color=astrometry::NODATA) const; | ||
void toPix(double xworld, double yworld, | ||
double &xpix, double &ypix, | ||
double color = astrometry::NODATA) const; | ||
|
||
#ifdef USE_YAML | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you know if There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, yaml is built into the mappings and if USE_YAML is false some key classes don't get built. Long term, it would be nice to remove this dependence though. |
||
// AST maps are not expected to be used for output, so we do not | ||
// attempt to write a full description to yaml. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We could, because AST mappings can be serialized to ASDF YAML. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good to know. I'm not going to implement that now, because I think it's pretty unlikely it will be needed. |
||
virtual void write(YAML::Emitter &os) const | ||
{ | ||
os << YAML::BeginMap << YAML::Key << "Type" << YAML::Value << type() | ||
<< YAML::EndMap; | ||
} | ||
#endif | ||
private: | ||
std::shared_ptr<ast::Mapping> mapping; | ||
}; | ||
} // namespace astrometry | ||
#endif //PIXMAP_H |
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -350,3 +350,29 @@ ConstantMap::create(const YAML::Node& node, | |||||
} | ||||||
} | ||||||
#endif | ||||||
|
||||||
PixelMap* | ||||||
ASTMap::duplicate() const { | ||||||
return new ASTMap(*mapping); | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
We want this to be a real deep copy, not a shallow copy of just the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Two things--first isn’t There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You're right - the copy is already there in the constructor, and we don't need another copy here. Ignore me. |
||||||
} | ||||||
|
||||||
void | ||||||
ASTMap::toWorld(double xpix, double ypix, | ||||||
double& xworld, double& yworld, | ||||||
double color) const { | ||||||
|
||||||
std::vector<double> pixCoords{xpix, ypix}; | ||||||
std::vector<double> worldCoord = mapping->applyForward(pixCoords); | ||||||
xworld = worldCoord[0]; | ||||||
yworld = worldCoord[1]; | ||||||
} | ||||||
|
||||||
void | ||||||
ASTMap::toPix( double xworld, double yworld, | ||||||
double &xpix, double &ypix, | ||||||
double color) const { | ||||||
std::vector<double> worldCoords(xworld, yworld); | ||||||
std::vector<double> pixCoord = mapping->applyInverse(worldCoords); | ||||||
xpix = pixCoord[0]; | ||||||
ypix = pixCoord[1]; | ||||||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
setupRequired(astshim) | ||
envPrepend(PYTHONPATH, ${PRODUCT_DIR}/build/pydir) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can't comment on this line below
This adds the target
WCSfit
as an executablelinking all static libs.
astrometry
which linksastshim
Linking everything into one shlib
gbdes
might work and link this to this executable. Or removethis target if it is not needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think we need an executable target here, unless @cmsaunders still finds it convenient for comparison-testing sometimes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm going to just leave in instructions for how to build the executable if needed.