55 #ifdef WITH_ONNX_MODELS
100 [reference_coordinates, coordinates, offset](
double x,
double y) {
101 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(
x-1,
y-1))).m_x - offset.
m_x + 0.5;
106 [reference_coordinates, coordinates, offset](
double x,
double y) {
107 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(
x-1,
y-1))).m_y - offset.
m_y + 0.5;
123 [reference_coordinates, coordinates, offset](
double x,
double y) {
124 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(
x-1,
y-1))).m_x - offset.
m_x + 0.5;
129 [reference_coordinates, coordinates, offset](
double x,
double y) {
130 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(
x-1,
y-1))).m_y - offset.
m_y + 0.5;
134 auto x_scale = std::make_shared<ManualParameter>(1);
138 [](
double flux,
double radius,
double aspect) {
return flux / (2 * M_PI * 0.35513 * radius * radius * aspect); },
143 [](
double eff_radius) {
return 1.678 / eff_radius; },
151 size, size, pixel_x, pixel_y, manager.
getParameter(source, m_flux), jacobian));
164 [reference_coordinates, coordinates, offset](
double x,
double y) {
165 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(
x-1,
y-1))).m_x - offset.
m_x + 0.5;
170 [reference_coordinates, coordinates, offset](
double x,
double y) {
171 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(
x-1,
y-1))).m_y - offset.
m_y + 0.5;
174 auto n = std::make_shared<ManualParameter>(4);
175 auto x_scale = std::make_shared<ManualParameter>(1);
178 [](
double flux,
double radius,
double aspect) {
return flux / (2 * M_PI * 0.001684925 * radius * radius * aspect); },
183 [](
double eff_radius) {
return 7.669 /
pow(eff_radius, .25); },
191 size, size, pixel_x, pixel_y, manager.
getParameter(source, m_flux), jacobian));
200 return 2 * n - 1.0 / 3.0 + 4 / (405 * n)
201 + 46 / (25515 * n * n) + 131 / (1148175 * n * n * n) - 2194697 / (30690717750 * n * n * n * n);
213 [reference_coordinates, coordinates, offset](
double x,
double y) {
214 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(
x-1,
y-1))).m_x - offset.
m_x + 0.5;
218 [reference_coordinates, coordinates, offset](
double x,
double y) {
219 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(
x-1,
y-1))).m_y - offset.
m_y + 0.5;
222 auto x_scale = std::make_shared<ManualParameter>(1);
225 [](
double flux,
double radius,
double aspect,
double n) {
return flux / (2 * M_PI *
pow(
computeBn(n), -2*n) * n *
std::tgamma(2*n) * radius * radius * aspect); },
230 [](
double eff_radius,
double n) {
return computeBn(n) /
pow(eff_radius, 1.0 / n); },
238 manager.
getParameter(source, m_angle), size, size, pixel_x, pixel_y, manager.
getParameter(source, m_flux), jacobian));
252 #ifdef WITH_ONNX_MODELS
264 [reference_coordinates, coordinates, offset](
double x,
double y) {
265 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(
x-1,
y-1))).m_x - offset.
m_x + 0.5;
270 [reference_coordinates, coordinates, offset](
double x,
double y) {
271 return coordinates->worldToImage(reference_coordinates->imageToWorld(ImageCoordinate(
x-1,
y-1))).m_y - offset.
m_y + 0.5;
275 [](
double scale,
double ratio) {
276 return scale * ratio;
279 auto& boundaries = source.
getProperty<PixelBoundaries>();
283 for (
auto it : m_params) {
284 params[it.first] = manager.
getParameter(source, it.second);
289 size, size, pixel_x, pixel_y, manager.
getParameter(source, m_flux), params, jacobian));
292 FlexibleModelFittingOnnxModel::FlexibleModelFittingOnnxModel(
304 m_aspect_ratio(aspect_ratio),
310 std::sort(m_models.begin(), m_models.end(),
312 return a->getOutputShape()[2] < b->getOutputShape()[2];
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y
T emplace_back(T... args)
std::unique_ptr< T > make_unique(Args &&... args)
std::shared_ptr< DependentParameter< Parameters... > > createDependentParameter(typename DependentParameter< Parameters... >::ValueCalculator value_calculator, Parameters... parameters)