jfjoch_process: A bit more options
Some checks failed
Build Packages / build:rpm (rocky9_nocuda) (push) Failing after 3m9s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 10m16s
Build Packages / Generate python client (push) Successful in 35s
Build Packages / Build documentation (push) Successful in 58s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 12m0s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m5s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 13m3s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m27s
Build Packages / build:rpm (rocky8) (push) Successful in 13m29s
Build Packages / build:rpm (rocky9) (push) Successful in 13m54s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 12m4s
Build Packages / Unit tests (push) Successful in 53m24s

This commit is contained in:
2026-01-19 21:34:05 +01:00
parent 94f3306c98
commit 48d2ed3c06

View File

@@ -32,6 +32,9 @@ void print_usage(Logger &logger) {
logger.Info(" -s<num> Start image number (default: 0)");
logger.Info(" -e<num> End image number (default: all)");
logger.Info(" -v Verbose output");
logger.Info(" -R[num] Rotation indexing (optional: min angular range deg)");
logger.Info(" -F Use FFT indexing algorithm (default: Auto)");
logger.Info(" -x No least-square beam center refinement");
}
int main(int argc, char **argv) {
@@ -47,7 +50,10 @@ int main(int argc, char **argv) {
int start_image = 0;
int end_image = -1; // -1 indicates process until end
bool verbose = false;
bool rotation_index = false;
bool rotation_indexing = false;
std::optional<float> rotation_indexing_range;
bool use_fft = false;
bool refine_beam_center = true;
if (argc == 1) {
print_usage(logger);
@@ -55,7 +61,7 @@ int main(int argc, char **argv) {
}
int opt;
while ((opt = getopt(argc, argv, "o:N:s:e:vR")) != -1) {
while ((opt = getopt(argc, argv, "o:N:s:e:vR::Fx")) != -1) {
switch (opt) {
case 'o':
output_prefix = optarg;
@@ -73,7 +79,14 @@ int main(int argc, char **argv) {
verbose = true;
break;
case 'R':
rotation_index = true;
rotation_indexing = true;
if (optarg) rotation_indexing_range = atof(optarg);
break;
case 'F':
use_fft = true;
break;
case 'x':
refine_beam_center = false;
break;
default:
print_usage(logger);
@@ -117,9 +130,19 @@ int main(int argc, char **argv) {
// Configure Indexing
IndexingSettings indexing_settings;
indexing_settings.Algorithm(IndexingAlgorithmEnum::FFT);
indexing_settings.RotationIndexing(rotation_index);
indexing_settings.GeomRefinementAlgorithm(GeomRefinementAlgorithmEnum::BeamCenter);
if (use_fft)
indexing_settings.Algorithm(IndexingAlgorithmEnum::FFT);
else
indexing_settings.Algorithm(IndexingAlgorithmEnum::Auto);
indexing_settings.RotationIndexing(rotation_indexing);
if (rotation_indexing_range.has_value())
indexing_settings.RotationIndexingMinAngularRange_deg(rotation_indexing_range.value());
if (refine_beam_center)
indexing_settings.GeomRefinementAlgorithm(GeomRefinementAlgorithmEnum::BeamCenter);
else
indexing_settings.GeomRefinementAlgorithm(GeomRefinementAlgorithmEnum::None);
experiment.ImportIndexingSettings(indexing_settings);
SpotFindingSettings spot_settings;