v1.0.0-rc.68

This commit is contained in:
2025-08-16 19:59:27 +02:00
parent 764ca111e2
commit 20973792e4
191 changed files with 1258 additions and 482 deletions
+5 -35
View File
@@ -10,7 +10,7 @@
#include "StrongPixelSet.h"
struct intensity_id {
int64_t I;
float I;
uint32_t id;
};
@@ -19,16 +19,15 @@ struct res_id {
uint32_t id;
};
void FilterSpotsByCount(int64_t count,
const std::vector<DiffractionSpot> &input,
std::vector<DiffractionSpot> &output) {
const std::vector<SpotToSave> &input,
std::vector<SpotToSave> &output) {
size_t output_size = std::min<size_t>(input.size(), count);
std::vector<intensity_id> intensity_id_vector(input.size());
for (int i = 0; i < input.size(); i++) {
intensity_id_vector[i].I = input[i].Count();
intensity_id_vector[i].I = input[i].intensity;
intensity_id_vector[i].id = i;
}
@@ -40,35 +39,6 @@ void FilterSpotsByCount(int64_t count,
output.push_back(input[intensity_id_vector[i].id]);
}
void FilterSpotsByCount(const DiffractionExperiment& experiment,
const std::vector<DiffractionSpot> &input,
std::vector<DiffractionSpot> &output) {
FilterSpotsByCount(experiment.GetMaxSpotCount(), input, output);
}
void FilterSpotsByResolution(const DiffractionExperiment& experiment,
const std::vector<DiffractionSpot> &input,
std::vector<DiffractionSpot> &output) {
if (input.size() < experiment.GetMaxSpotCount())
output = input;
size_t output_size = std::min<size_t>(input.size(), experiment.GetMaxSpotCount());
std::vector<res_id> res_id_vector(input.size());
DiffractionGeometry geom = experiment.GetDiffractionGeometry();
for (int i = 0; i < input.size(); i++) {
res_id_vector[i].res = input[i].GetResolution(geom);
res_id_vector[i].id = i;
}
std::partial_sort(res_id_vector.begin(), res_id_vector.begin() + output_size, res_id_vector.end(),
[](const res_id& a,const res_id& b ) { return a.res > b.res;});
output.reserve(output_size);
for (int i = 0; i < output_size; i++)
output.push_back(input[res_id_vector[i].id]);
}
StrongPixelSet::StrongPixelSet() : strong_pixel_count(0) {
pixels.reserve(max_strong_pixel_per_module);
}
@@ -83,7 +53,7 @@ bool is_far_enough(strong_pixel pixel0, strong_pixel pixel1) {
bool is_adjacent(strong_pixel pixel0, strong_pixel pixel1) {
return (fabs(pixel0.line - pixel1.line) <= 1) and
(fabs(pixel0.col - pixel1.col) <= 1);
(fabs(pixel0.col - pixel1.col) <= 1);
}
uint16_t StrongPixelSet::find_root(uint16_t e) {