Skip to content

Commit ae99f80

Browse files
authored
Fix assoc source size configuration (#607)
* fix change in how assoc size column was interpreted (should be radius) * also change for the ascii config file * And use proper constants for ascii config literals
1 parent 403ec76 commit ae99f80

File tree

2 files changed

+58
-47
lines changed

2 files changed

+58
-47
lines changed

SEImplementation/src/lib/Plugin/AssocMode/AssocModeConfig.cpp

Lines changed: 56 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ static const std::string ASSOC_COPY { "assoc-copy" };
5050
static const std::string ASSOC_COLUMNS { "assoc-columns" };
5151
static const std::string ASSOC_COORD_TYPE { "assoc-coord-type" };
5252
static const std::string ASSOC_SOURCE_SIZES { "assoc-source-sizes" };
53-
static const std::string ASSOC_SOURCE_WIDTHS { "assoc-source-widths" };
54-
static const std::string ASSOC_SOURCE_HEIGHTS { "assoc-source-heights" };
53+
static const std::string ASSOC_SOURCE_HALF_WIDTHS { "assoc-source-half-widths" };
54+
static const std::string ASSOC_SOURCE_HALF_HEIGHTS { "assoc-source-half-heights" };
5555
static const std::string ASSOC_DEFAULT_PIXEL_SIZE { "assoc-default-pixel-size" };
5656
static const std::string ASSOC_GROUP_ID { "assoc-group-id" };
5757
static const std::string ASSOC_CONFIG { "assoc-config" };
@@ -82,6 +82,16 @@ const std::map<std::string, AssocModeConfig::AssocCoordType> assoc_coord_type_ta
8282
std::make_pair("WORLD", AssocModeConfig::AssocCoordType::WORLD)
8383
};
8484

85+
const std::string COLUMN_X = "x";
86+
const std::string COLUMN_Y = "y";
87+
const std::string COLUMN_RA = "ra";
88+
const std::string COLUMN_DEC = "dec";
89+
const std::string COLUMN_WEIGHT = "weight";
90+
const std::string COLUMN_GROUP_ID = "group_id";
91+
const std::string COLUMN_PIXEL_SIZE = "pixel_size";
92+
const std::string COLUMN_PIXEL_HALF_WIDTH = "pixel_half_width";
93+
const std::string COLUMN_PIXEL_HALF_HEIGHT = "pixel_half_height";
94+
8595
std::vector<int> parseColumnList(const std::string& arg) {
8696
if (arg.size() > 0) {
8797
try {
@@ -131,11 +141,11 @@ std::map<std::string, Configuration::OptionDescriptionList> AssocModeConfig::get
131141
{ASSOC_COORD_TYPE.c_str(), po::value<std::string>()->default_value("PIXEL"),
132142
"Assoc coordinates type: PIXEL, WORLD"},
133143
{ASSOC_SOURCE_SIZES.c_str(), po::value<int>()->default_value(-1),
134-
"Column containing the source sizes (in reference frame pixels)"},
135-
{ASSOC_SOURCE_WIDTHS.c_str(), po::value<int>()->default_value(-1),
136-
"Column containing the source widths (in reference frame pixels)"},
137-
{ASSOC_SOURCE_HEIGHTS.c_str(), po::value<int>()->default_value(-1),
138-
"Column containing the source heights (in reference frame pixels)"},
144+
"Column containing the source radius (in reference frame pixels)"},
145+
{ASSOC_SOURCE_HALF_WIDTHS.c_str(), po::value<int>()->default_value(-1),
146+
"Column containing the source half width (in reference frame pixels)"},
147+
{ASSOC_SOURCE_HALF_HEIGHTS.c_str(), po::value<int>()->default_value(-1),
148+
"Column containing the source half height (in reference frame pixels)"},
139149
{ASSOC_DEFAULT_PIXEL_SIZE.c_str(), po::value<double>()->default_value(5.0),
140150
"Default source size (in reference frame pixels)"},
141151
{ASSOC_GROUP_ID.c_str(), po::value<int>()->default_value(-1),
@@ -218,11 +228,11 @@ void AssocModeConfig::readConfigFromParams(const UserValues& args) {
218228
m_pixel_width_column = args.at(ASSOC_SOURCE_SIZES).as<int>() - 1; // config uses 1 as first column
219229
m_pixel_height_column = args.at(ASSOC_SOURCE_SIZES).as<int>() - 1; // config uses 1 as first column
220230

221-
if (args.find(ASSOC_SOURCE_WIDTHS) != args.end() && args.at(ASSOC_SOURCE_WIDTHS).as<int>() > 0) {
222-
m_pixel_width_column = args.at(ASSOC_SOURCE_WIDTHS).as<int>() - 1; // config uses 1 as first column
231+
if (args.find(ASSOC_SOURCE_HALF_WIDTHS) != args.end() && args.at(ASSOC_SOURCE_HALF_WIDTHS).as<int>() > 0) {
232+
m_pixel_width_column = args.at(ASSOC_SOURCE_HALF_WIDTHS).as<int>() - 1; // config uses 1 as first column
223233
}
224-
if (args.find(ASSOC_SOURCE_HEIGHTS) != args.end() && args.at(ASSOC_SOURCE_HEIGHTS).as<int>() > 0) {
225-
m_pixel_height_column = args.at(ASSOC_SOURCE_HEIGHTS).as<int>() - 1; // config uses 1 as first column
234+
if (args.find(ASSOC_SOURCE_HALF_HEIGHTS) != args.end() && args.at(ASSOC_SOURCE_HALF_HEIGHTS).as<int>() > 0) {
235+
m_pixel_height_column = args.at(ASSOC_SOURCE_HALF_HEIGHTS).as<int>() - 1; // config uses 1 as first column
226236
}
227237

228238
m_group_id_column = args.at(ASSOC_GROUP_ID).as<int>() - 1; // config uses 1 as first column
@@ -233,60 +243,60 @@ void AssocModeConfig::readConfigFromParams(const UserValues& args) {
233243
void AssocModeConfig::readConfigFromFile(const std::string& filename) {
234244
m_assoc_columns = parseConfigFile(filename);
235245

236-
if (m_assoc_columns.find("x") != m_assoc_columns.end() && m_assoc_columns.find("y") != m_assoc_columns.end()) {
246+
if (m_assoc_columns.find(COLUMN_X) != m_assoc_columns.end() && m_assoc_columns.find(COLUMN_Y) != m_assoc_columns.end()) {
237247
m_assoc_coord_type = AssocCoordType::PIXEL;
238248

239-
m_columns.push_back(m_assoc_columns.at("x"));
240-
m_assoc_columns.erase("x");
241-
m_columns.push_back(m_assoc_columns.at("y"));
242-
m_assoc_columns.erase("y");
249+
m_columns.push_back(m_assoc_columns.at(COLUMN_X));
250+
m_assoc_columns.erase(COLUMN_X);
251+
m_columns.push_back(m_assoc_columns.at(COLUMN_Y));
252+
m_assoc_columns.erase(COLUMN_Y);
243253

244-
if (m_assoc_columns.find("ra") != m_assoc_columns.end() ||
245-
m_assoc_columns.find("dec") != m_assoc_columns.end()) {
254+
if (m_assoc_columns.find(COLUMN_RA) != m_assoc_columns.end() ||
255+
m_assoc_columns.find(COLUMN_DEC) != m_assoc_columns.end()) {
246256
throw Elements::Exception() << "Use either X/Y or RA/DEC coordinates in assoc config file but not both";
247257
}
248-
} else if (m_assoc_columns.find("ra") != m_assoc_columns.end() &&
249-
m_assoc_columns.find("dec") != m_assoc_columns.end()) {
258+
} else if (m_assoc_columns.find(COLUMN_RA) != m_assoc_columns.end() &&
259+
m_assoc_columns.find(COLUMN_DEC) != m_assoc_columns.end()) {
250260

251261
m_assoc_coord_type = AssocCoordType::WORLD;
252262

253-
m_columns.push_back(m_assoc_columns.at("ra"));
254-
m_assoc_columns.erase("ra");
255-
m_columns.push_back(m_assoc_columns.at("dec"));
256-
m_assoc_columns.erase("dec");
263+
m_columns.push_back(m_assoc_columns.at(COLUMN_RA));
264+
m_assoc_columns.erase(COLUMN_RA);
265+
m_columns.push_back(m_assoc_columns.at(COLUMN_DEC));
266+
m_assoc_columns.erase(COLUMN_DEC);
257267

258-
if (m_assoc_columns.find("x") != m_assoc_columns.end() ||
259-
m_assoc_columns.find("y") != m_assoc_columns.end()) {
268+
if (m_assoc_columns.find(COLUMN_X) != m_assoc_columns.end() ||
269+
m_assoc_columns.find(COLUMN_Y) != m_assoc_columns.end()) {
260270
throw Elements::Exception() << "Use either X/Y or RA/DEC coordinates in assoc config file but not both";
261271
}
262272
} else {
263273
throw Elements::Exception() << "Missing X/Y or RA/DEC coordinates in assoc config file";
264274
}
265275

266-
if (m_assoc_columns.find("weight") != m_assoc_columns.end()) {
267-
m_columns.push_back(m_assoc_columns.at("weight"));
268-
m_assoc_columns.erase("weight");
276+
if (m_assoc_columns.find(COLUMN_WEIGHT) != m_assoc_columns.end()) {
277+
m_columns.push_back(m_assoc_columns.at(COLUMN_WEIGHT));
278+
m_assoc_columns.erase(COLUMN_WEIGHT);
269279
}
270280

271-
if (m_assoc_columns.find("pixel_size") != m_assoc_columns.end()) {
272-
m_pixel_width_column = m_assoc_columns.at("pixel_size");
273-
m_pixel_height_column = m_assoc_columns.at("pixel_size");
274-
m_assoc_columns.erase("pixel_size");
281+
if (m_assoc_columns.find(COLUMN_PIXEL_SIZE) != m_assoc_columns.end()) {
282+
m_pixel_width_column = m_assoc_columns.at(COLUMN_PIXEL_SIZE);
283+
m_pixel_height_column = m_assoc_columns.at(COLUMN_PIXEL_SIZE);
284+
m_assoc_columns.erase(COLUMN_PIXEL_SIZE);
275285
}
276286

277-
if (m_assoc_columns.find("pixel_width") != m_assoc_columns.end()) {
278-
m_pixel_width_column = m_assoc_columns.at("pixel_width");
279-
m_assoc_columns.erase("pixel_width");
287+
if (m_assoc_columns.find(COLUMN_PIXEL_HALF_WIDTH) != m_assoc_columns.end()) {
288+
m_pixel_width_column = m_assoc_columns.at(COLUMN_PIXEL_HALF_WIDTH);
289+
m_assoc_columns.erase(COLUMN_PIXEL_HALF_WIDTH);
280290
}
281291

282-
if (m_assoc_columns.find("pixel_height") != m_assoc_columns.end()) {
283-
m_pixel_height_column = m_assoc_columns.at("pixel_height");
284-
m_assoc_columns.erase("pixel_height");
292+
if (m_assoc_columns.find(COLUMN_PIXEL_HALF_HEIGHT) != m_assoc_columns.end()) {
293+
m_pixel_height_column = m_assoc_columns.at(COLUMN_PIXEL_HALF_HEIGHT);
294+
m_assoc_columns.erase(COLUMN_PIXEL_HALF_HEIGHT);
285295
}
286296

287-
if (m_assoc_columns.find("group_id") != m_assoc_columns.end()) {
288-
m_group_id_column = m_assoc_columns.at("group_id");
289-
m_assoc_columns.erase("group_id");
297+
if (m_assoc_columns.find(COLUMN_GROUP_ID) != m_assoc_columns.end()) {
298+
m_group_id_column = m_assoc_columns.at(COLUMN_GROUP_ID);
299+
m_assoc_columns.erase(COLUMN_GROUP_ID);
290300
}
291301

292302
for (auto& column_info : m_assoc_columns) {
@@ -429,7 +439,8 @@ std::map<std::string, unsigned int> AssocModeConfig::parseConfigFile(const std:
429439
std::map<std::string, unsigned int> columns;
430440

431441
const std::vector<std::string> reserved_names {
432-
"x", "y", "ra", "dec", "weight", "group_id", "pixel_size", "pixel_width", "pixel_height"
442+
COLUMN_X, COLUMN_Y, COLUMN_RA, COLUMN_DEC, COLUMN_WEIGHT,
443+
COLUMN_GROUP_ID, COLUMN_PIXEL_SIZE, COLUMN_PIXEL_HALF_WIDTH, COLUMN_PIXEL_HALF_HEIGHT
433444
};
434445

435446
std::ifstream config_file(filename);
@@ -493,10 +504,10 @@ void AssocModeConfig::printConfig() {
493504
}
494505

495506
if (m_pixel_width_column >= 0) {
496-
std::cout << "PIXEL_WIDTH" << "\t";
507+
std::cout << "PIXEL_HALF_WIDTH" << "\t";
497508
}
498509
if (m_pixel_height_column >= 0) {
499-
std::cout << "PIXEL_HEIGHT" << "\t";
510+
std::cout << "PIXEL_HALF_HEIGHT" << "\t";
500511
}
501512
if (m_group_id_column >= 0) {
502513
std::cout << "GROUP_ID" << "\t";

SEImplementation/src/lib/Plugin/MeasurementFrameRectangle/MeasurementFrameRectangleTaskNoDetect.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ void MeasurementFrameRectangleTaskNoDetect::computeProperties(SourceInterface& s
4040
bool bad_coordinates = false;
4141
ImageCoordinate coord1, coord2, coord3, coord4;
4242
try {
43-
int w = assoc_mode.getRefFramePixelWidth() / 2.0;
44-
int h = assoc_mode.getRefFramePixelHeight() / 2.0;
43+
int w = assoc_mode.getRefFramePixelWidth();
44+
int h = assoc_mode.getRefFramePixelHeight();
4545

4646
auto c = measurement_frame_coordinates->worldToImage(coord);
4747
coord1 = ImageCoordinate(c.m_x - w, c.m_y - h);

0 commit comments

Comments
 (0)