55 auto rand_int =
bind(int_distribution, generator);
57 auto rand_double =
bind(double_distribution, generator);
72 auto back_value = std::make_shared<ManualParameter>(1E-6);
73 constant_models.emplace_back(back_value);
76 for (
auto point_no=rand_int(); point_no>0; --point_no) {
79 auto x = std::make_shared<ManualParameter>(rand_double() * width);
80 auto y = std::make_shared<ManualParameter>(rand_double() * height);
81 auto value = std::make_shared<ManualParameter>(rand_double() * 5.);
82 point_models.emplace_back(
x,
y, value);
86 for (
auto ext_no=rand_int(); ext_no>0; --ext_no) {
91 auto x_scale = std::make_shared<ManualParameter>((rand_double() * .4) + .1);
92 auto y_scale = std::make_shared<ManualParameter>((rand_double() * .4) + .1);
94 auto rot_angle = std::make_shared<ManualParameter>(rand_double() * M_PI);
96 auto x = std::make_shared<ManualParameter>(rand_double() * width);
97 auto y = std::make_shared<ManualParameter>(rand_double() * height);
99 double width = 15. *
std::max(x_scale->getValue(), y_scale->getValue());
100 double height = 15. *
std::max(x_scale->getValue(), y_scale->getValue());
103 auto exp_i0 = std::make_shared<ManualParameter>(rand_double() * 1E2 + .1);
104 auto exp_n = std::make_shared<ManualParameter>(1.);
105 auto exp_k = std::make_shared<ManualParameter>(1.);
106 auto exp_reg_man = make_unique<OnlySmooth>();
107 auto exp = make_unique<SersicModelComponent>(
move(exp_reg_man), exp_i0, exp_n, exp_k);
108 component_list.emplace_back(
move(
exp));
110 auto dev_i0 = std::make_shared<ManualParameter>(rand_double() * 5E3 + 1.);
111 auto dev_n = std::make_shared<ManualParameter>(4.);
112 auto dev_k = std::make_shared<ManualParameter>(7.66924944);
113 auto dev_reg_man = make_unique<AutoSharp>();
114 auto dev = make_unique<SersicModelComponent>(
move(dev_reg_man), dev_i0, dev_n, dev_k);
118 rot_angle, width, height,
x,
y));
128 auto psf =
readPsf(psf_path[0].
string());
143 auto image = frame_model.getImage();