ScaleAndMerge: clean-up (no log residual, no fixed mosaicity, return per-image values)

This commit is contained in:
2026-02-20 11:37:59 +01:00
parent 43c3402198
commit e6e0f5b2f0
5 changed files with 128 additions and 150 deletions

View File

@@ -42,7 +42,7 @@ void print_usage(Logger &logger) {
logger.Info(" -D<num> High resolution limit for scaling/merging (default: 0.0; no limit)");
logger.Info(" -S<num> Space group number");
logger.Info(" -M Scale and merge (refine mosaicity) and write scaled.hkl + image.dat");
logger.Info(" -m<txt> Mosaicity refinement none|fixed|image (default: image)");
logger.Info(" -m<txt> Mosaicity refinement none|image (default: image)");
logger.Info(" -A Anomalous mode (don't merge Friedel pairs)");
}
@@ -67,7 +67,7 @@ int main(int argc, char **argv) {
bool anomalous_mode = false;
std::optional<int> space_group_number;
enum class MosaicityRefinementMode { None, Fixed, Image };
enum class MosaicityRefinementMode { None, Image };
MosaicityRefinementMode mosaicity_refinement_mode = MosaicityRefinementMode::Image;
float d_min_spot_finding = 1.5;
@@ -125,8 +125,6 @@ int main(int argc, char **argv) {
case 'm':
if (strcmp(optarg, "none") == 0)
mosaicity_refinement_mode = MosaicityRefinementMode::None;
else if (strcmp(optarg, "fixed") == 0)
mosaicity_refinement_mode = MosaicityRefinementMode::Fixed;
else if (strcmp(optarg, "image") == 0)
mosaicity_refinement_mode = MosaicityRefinementMode::Image;
else {
@@ -433,13 +431,8 @@ int main(int argc, char **argv) {
case MosaicityRefinementMode::None:
scale_opts.refine_mosaicity = false;
break;
case MosaicityRefinementMode::Fixed:
scale_opts.refine_mosaicity = true;
scale_opts.per_image_mosaicity = false;
break;
case MosaicityRefinementMode::Image:
scale_opts.refine_mosaicity = true;
scale_opts.per_image_mosaicity = true;
break;
}
if (space_group)
@@ -453,10 +446,8 @@ int main(int argc, char **argv) {
double scale_time = std::chrono::duration<double>(scale_end - scale_start).count();
if (scale_result) {
logger.Info("Scaling completed in {:.2f} s ({} unique reflections, {} images)",
scale_time,
scale_result->merged.size(),
scale_result->image_ids.size());
logger.Info("Scaling completed in {:.2f} s ({} unique reflections)",
scale_time, scale_result->merged.size());
// Print resolution-shell statistics table
{
@@ -499,13 +490,10 @@ int main(int argc, char **argv) {
logger.Error("Cannot open {} for writing", img_path);
} else {
img_file << "# image_id mosaicity_deg K\n";
for (size_t i = 0; i < scale_result->image_ids.size(); ++i) {
img_file << scale_result->image_ids[i] << " "
<< scale_result->mosaicity_deg[i] << " "
<< scale_result->image_scale_g[i] << "\n";
for (size_t i = 0; i < scale_result->mosaicity_deg.size(); ++i) {
img_file << i << " " << scale_result->mosaicity_deg[i] << " " << scale_result->image_scale_g[i] << "\n";
}
img_file.close();
logger.Info("Wrote {} image records to {}", scale_result->image_ids.size(), img_path);
}
}