Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
22f6abc
Update CMakeLists.txt
marcschefer Jul 4, 2024
7042ed2
Update README.md
marcschefer Jul 4, 2024
2a60a3b
fix use of deprecated function
marcschefer Aug 30, 2024
0420987
also update functions in frame config
marcschefer Aug 30, 2024
ce12954
Merge pull request #591 from astrorama/feature/update_deprecated_boost_2
marcschefer Sep 2, 2024
e9f6c2d
fix for a bug in quadtree causing moffat grouping crash
marcschefer Sep 9, 2024
7217db8
Update main.yml to use v4 action
marcschefer Sep 20, 2024
39dc034
Merge pull request #595 from astrorama/fix/actions-v4
marcschefer Sep 20, 2024
0a3d627
Merge pull request #593 from astrorama/fix/moffat_optimized_crash
marcschefer Jan 21, 2025
4b294b7
Update Alexandria 2.31.4 (#599)
marcschefer Mar 11, 2025
12bf768
Restrict model fitting window to a disk (#596)
marcschefer Mar 20, 2025
715e3b1
Allow disabling PSF renormalization in model fitting (#597)
marcschefer Mar 20, 2025
cd1e002
Allows a reference image to be provided to provide the reference coor…
marcschefer Mar 20, 2025
4dee587
Fix PixelCentroid error with no detect mode (#602)
marcschefer Apr 3, 2025
470e573
Update CMakeLists.txt
marcschefer Apr 10, 2025
e1f01c7
fix deprecated boost function (#604)
marcschefer Apr 11, 2025
cbf1463
Update README.md
marcschefer Apr 11, 2025
96d4079
Correct version number of develop branch
marcschefer Apr 17, 2025
b878202
fix bug in assoc mode config with width and height (#605)
marcschefer Apr 17, 2025
403ec76
Update setup-dependencies to 3.7 for fedora 42 (#606)
marcschefer Apr 17, 2025
ae99f80
Fix assoc source size configuration (#607)
marcschefer Apr 17, 2025
4615463
1.0.2 hotfix
marcschefer Apr 17, 2025
4390099
merge master/change version number
marcschefer Apr 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
id: package-version
uses: astrorama/actions/[email protected]
- name: Install dependencies
uses: astrorama/actions/setup-dependencies@v3.4
uses: astrorama/actions/setup-dependencies@v3.7
with:
dependency-list: .github/workflows/dependencies.txt
- name: Build
Expand Down Expand Up @@ -95,7 +95,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
uses: astrorama/actions/setup-dependencies@v3
uses: astrorama/actions/setup-dependencies@v3.7
with:
dependency-list: .github/workflows/test-dependencies.txt
- name: Download RPM
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ find_package(ElementsProject)
#---------------------------------------------------------------

# Declare project name and version
elements_project(SourceXtractorPlusPlus 1.0 USE Alexandria 2.31.4 DESCRIPTION "SourceXtractor++, the next generation SExtractor")
elements_project(SourceXtractorPlusPlus 1.0.2 USE Alexandria 2.31.4 DESCRIPTION "SourceXtractor++, the next generation SExtractor")
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ Documentation: https://astrorama.github.io/SourceXtractorPlusPlus/
SourceXtractor++ is available on [Anaconda Cloud for Linux and MacOSX](https://anaconda.org/astrorama/sourcextractor)

```bash
conda install -c conda-forge -c astrorama sourcextractor==0.22
conda install -c conda-forge -c astrorama sourcextractor==1.0.2
```

We would recommend, however, to install it into its own environment.

```bash
conda create -n sourcex -c astrorama -c conda-forge sourcextractor==0.22
conda create -n sourcex -c astrorama -c conda-forge sourcextractor==1.0.2
conda activate sourcex
```

Expand All @@ -44,7 +44,7 @@ SourceXtractor++ is shipped directly in Fedora. It can be installed simply as fo
sudo dnf install sourcextractor++
```

[We also build our own RPMs as part of our CI setup](http://repository.astro.unige.ch/euclid/devel/)
[We also build our own RPMs as part of our CI setup](http://repository.astro.unige.ch/euclid/)
They can be installed adding a `.repo` file under `/etc/yum.repos.d` with the following content:

```ini
Expand Down
102 changes: 57 additions & 45 deletions SEImplementation/src/lib/Plugin/AssocMode/AssocModeConfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ static const std::string ASSOC_COPY { "assoc-copy" };
static const std::string ASSOC_COLUMNS { "assoc-columns" };
static const std::string ASSOC_COORD_TYPE { "assoc-coord-type" };
static const std::string ASSOC_SOURCE_SIZES { "assoc-source-sizes" };
static const std::string ASSOC_SOURCE_WIDTHS { "assoc-source-widths" };
static const std::string ASSOC_SOURCE_HEIGHTS { "assoc-source-heights" };
static const std::string ASSOC_SOURCE_HALF_WIDTHS { "assoc-source-half-widths" };
static const std::string ASSOC_SOURCE_HALF_HEIGHTS { "assoc-source-half-heights" };
static const std::string ASSOC_DEFAULT_PIXEL_SIZE { "assoc-default-pixel-size" };
static const std::string ASSOC_GROUP_ID { "assoc-group-id" };
static const std::string ASSOC_CONFIG { "assoc-config" };
Expand Down Expand Up @@ -82,6 +82,16 @@ const std::map<std::string, AssocModeConfig::AssocCoordType> assoc_coord_type_ta
std::make_pair("WORLD", AssocModeConfig::AssocCoordType::WORLD)
};

const std::string COLUMN_X = "x";
const std::string COLUMN_Y = "y";
const std::string COLUMN_RA = "ra";
const std::string COLUMN_DEC = "dec";
const std::string COLUMN_WEIGHT = "weight";
const std::string COLUMN_GROUP_ID = "group_id";
const std::string COLUMN_PIXEL_SIZE = "pixel_size";
const std::string COLUMN_PIXEL_HALF_WIDTH = "pixel_half_width";
const std::string COLUMN_PIXEL_HALF_HEIGHT = "pixel_half_height";

std::vector<int> parseColumnList(const std::string& arg) {
if (arg.size() > 0) {
try {
Expand Down Expand Up @@ -131,11 +141,11 @@ std::map<std::string, Configuration::OptionDescriptionList> AssocModeConfig::get
{ASSOC_COORD_TYPE.c_str(), po::value<std::string>()->default_value("PIXEL"),
"Assoc coordinates type: PIXEL, WORLD"},
{ASSOC_SOURCE_SIZES.c_str(), po::value<int>()->default_value(-1),
"Column containing the source sizes (in reference frame pixels)"},
{ASSOC_SOURCE_WIDTHS.c_str(), po::value<int>()->default_value(-1),
"Column containing the source widths (in reference frame pixels)"},
{ASSOC_SOURCE_HEIGHTS.c_str(), po::value<int>()->default_value(-1),
"Column containing the source heights (in reference frame pixels)"},
"Column containing the source radius (in reference frame pixels)"},
{ASSOC_SOURCE_HALF_WIDTHS.c_str(), po::value<int>()->default_value(-1),
"Column containing the source half width (in reference frame pixels)"},
{ASSOC_SOURCE_HALF_HEIGHTS.c_str(), po::value<int>()->default_value(-1),
"Column containing the source half height (in reference frame pixels)"},
{ASSOC_DEFAULT_PIXEL_SIZE.c_str(), po::value<double>()->default_value(5.0),
"Default source size (in reference frame pixels)"},
{ASSOC_GROUP_ID.c_str(), po::value<int>()->default_value(-1),
Expand Down Expand Up @@ -218,11 +228,11 @@ void AssocModeConfig::readConfigFromParams(const UserValues& args) {
m_pixel_width_column = args.at(ASSOC_SOURCE_SIZES).as<int>() - 1; // config uses 1 as first column
m_pixel_height_column = args.at(ASSOC_SOURCE_SIZES).as<int>() - 1; // config uses 1 as first column

if (args.find(ASSOC_SOURCE_WIDTHS) != args.end()) {
m_pixel_width_column = args.at(ASSOC_SOURCE_WIDTHS).as<int>() - 1; // config uses 1 as first column
if (args.find(ASSOC_SOURCE_HALF_WIDTHS) != args.end() && args.at(ASSOC_SOURCE_HALF_WIDTHS).as<int>() > 0) {
m_pixel_width_column = args.at(ASSOC_SOURCE_HALF_WIDTHS).as<int>() - 1; // config uses 1 as first column
}
if (args.find(ASSOC_SOURCE_HEIGHTS) != args.end()) {
m_pixel_height_column = args.at(ASSOC_SOURCE_HEIGHTS).as<int>() - 1; // config uses 1 as first column
if (args.find(ASSOC_SOURCE_HALF_HEIGHTS) != args.end() && args.at(ASSOC_SOURCE_HALF_HEIGHTS).as<int>() > 0) {
m_pixel_height_column = args.at(ASSOC_SOURCE_HALF_HEIGHTS).as<int>() - 1; // config uses 1 as first column
}

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

if (m_assoc_columns.find("x") != m_assoc_columns.end() && m_assoc_columns.find("y") != m_assoc_columns.end()) {
if (m_assoc_columns.find(COLUMN_X) != m_assoc_columns.end() && m_assoc_columns.find(COLUMN_Y) != m_assoc_columns.end()) {
m_assoc_coord_type = AssocCoordType::PIXEL;

m_columns.push_back(m_assoc_columns.at("x"));
m_assoc_columns.erase("x");
m_columns.push_back(m_assoc_columns.at("y"));
m_assoc_columns.erase("y");
m_columns.push_back(m_assoc_columns.at(COLUMN_X));
m_assoc_columns.erase(COLUMN_X);
m_columns.push_back(m_assoc_columns.at(COLUMN_Y));
m_assoc_columns.erase(COLUMN_Y);

if (m_assoc_columns.find("ra") != m_assoc_columns.end() ||
m_assoc_columns.find("dec") != m_assoc_columns.end()) {
if (m_assoc_columns.find(COLUMN_RA) != m_assoc_columns.end() ||
m_assoc_columns.find(COLUMN_DEC) != m_assoc_columns.end()) {
throw Elements::Exception() << "Use either X/Y or RA/DEC coordinates in assoc config file but not both";
}
} else if (m_assoc_columns.find("ra") != m_assoc_columns.end() &&
m_assoc_columns.find("dec") != m_assoc_columns.end()) {
} else if (m_assoc_columns.find(COLUMN_RA) != m_assoc_columns.end() &&
m_assoc_columns.find(COLUMN_DEC) != m_assoc_columns.end()) {

m_assoc_coord_type = AssocCoordType::WORLD;

m_columns.push_back(m_assoc_columns.at("ra"));
m_assoc_columns.erase("ra");
m_columns.push_back(m_assoc_columns.at("dec"));
m_assoc_columns.erase("dec");
m_columns.push_back(m_assoc_columns.at(COLUMN_RA));
m_assoc_columns.erase(COLUMN_RA);
m_columns.push_back(m_assoc_columns.at(COLUMN_DEC));
m_assoc_columns.erase(COLUMN_DEC);

if (m_assoc_columns.find("x") != m_assoc_columns.end() ||
m_assoc_columns.find("y") != m_assoc_columns.end()) {
if (m_assoc_columns.find(COLUMN_X) != m_assoc_columns.end() ||
m_assoc_columns.find(COLUMN_Y) != m_assoc_columns.end()) {
throw Elements::Exception() << "Use either X/Y or RA/DEC coordinates in assoc config file but not both";
}
} else {
throw Elements::Exception() << "Missing X/Y or RA/DEC coordinates in assoc config file";
}

if (m_assoc_columns.find("weight") != m_assoc_columns.end()) {
m_columns.push_back(m_assoc_columns.at("weight"));
m_assoc_columns.erase("weight");
if (m_assoc_columns.find(COLUMN_WEIGHT) != m_assoc_columns.end()) {
m_columns.push_back(m_assoc_columns.at(COLUMN_WEIGHT));
m_assoc_columns.erase(COLUMN_WEIGHT);
}

if (m_assoc_columns.find("pixel_size") != m_assoc_columns.end()) {
m_pixel_width_column = m_assoc_columns.at("pixel_size");
m_pixel_height_column = m_assoc_columns.at("pixel_size");
m_assoc_columns.erase("pixel_size");
if (m_assoc_columns.find(COLUMN_PIXEL_SIZE) != m_assoc_columns.end()) {
m_pixel_width_column = m_assoc_columns.at(COLUMN_PIXEL_SIZE);
m_pixel_height_column = m_assoc_columns.at(COLUMN_PIXEL_SIZE);
m_assoc_columns.erase(COLUMN_PIXEL_SIZE);
}

if (m_assoc_columns.find("pixel_width") != m_assoc_columns.end()) {
m_pixel_width_column = m_assoc_columns.at("pixel_width");
m_assoc_columns.erase("pixel_width");
if (m_assoc_columns.find(COLUMN_PIXEL_HALF_WIDTH) != m_assoc_columns.end()) {
m_pixel_width_column = m_assoc_columns.at(COLUMN_PIXEL_HALF_WIDTH);
m_assoc_columns.erase(COLUMN_PIXEL_HALF_WIDTH);
}

if (m_assoc_columns.find("pixel_height") != m_assoc_columns.end()) {
m_pixel_width_column = m_assoc_columns.at("pixel_height");
m_assoc_columns.erase("pixel_height");
if (m_assoc_columns.find(COLUMN_PIXEL_HALF_HEIGHT) != m_assoc_columns.end()) {
m_pixel_height_column = m_assoc_columns.at(COLUMN_PIXEL_HALF_HEIGHT);
m_assoc_columns.erase(COLUMN_PIXEL_HALF_HEIGHT);
}

if (m_assoc_columns.find("group_id") != m_assoc_columns.end()) {
m_group_id_column = m_assoc_columns.at("group_id");
m_assoc_columns.erase("group_id");
if (m_assoc_columns.find(COLUMN_GROUP_ID) != m_assoc_columns.end()) {
m_group_id_column = m_assoc_columns.at(COLUMN_GROUP_ID);
m_assoc_columns.erase(COLUMN_GROUP_ID);
}

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

const std::vector<std::string> reserved_names {
"x", "y", "ra", "dec", "weight", "group_id", "pixel_size", "pixel_width", "pixel_height"
COLUMN_X, COLUMN_Y, COLUMN_RA, COLUMN_DEC, COLUMN_WEIGHT,
COLUMN_GROUP_ID, COLUMN_PIXEL_SIZE, COLUMN_PIXEL_HALF_WIDTH, COLUMN_PIXEL_HALF_HEIGHT
};

std::ifstream config_file(filename);
Expand Down Expand Up @@ -491,11 +502,12 @@ void AssocModeConfig::printConfig() {
if (m_columns.size() >= 3) {
std::cout << "WEIGHT" << "\t";
}

if (m_pixel_width_column >= 0) {
std::cout << "PIXEL_WIDTH" << "\t";
std::cout << "PIXEL_HALF_WIDTH" << "\t";
}
if (m_pixel_height_column >= 0) {
std::cout << "PIXEL_HEIGHT" << "\t";
std::cout << "PIXEL_HALF_HEIGHT" << "\t";
}
if (m_group_id_column >= 0) {
std::cout << "GROUP_ID" << "\t";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ void MeasurementFrameRectangleTaskNoDetect::computeProperties(SourceInterface& s
bool bad_coordinates = false;
ImageCoordinate coord1, coord2, coord3, coord4;
try {
int w = assoc_mode.getRefFramePixelWidth() / 2.0;
int h = assoc_mode.getRefFramePixelHeight() / 2.0;
int w = assoc_mode.getRefFramePixelWidth();
int h = assoc_mode.getRefFramePixelHeight();

auto c = measurement_frame_coordinates->worldToImage(coord);
coord1 = ImageCoordinate(c.m_x - w, c.m_y - h);
Expand Down
Loading