PixelRefine: Results seem to be much better
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 25m3s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 29m53s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 30m11s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 31m27s
Build Packages / build:rpm (rocky8) (push) Successful in 31m39s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 32m50s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 34m20s
Build Packages / XDS test (durin plugin) (push) Successful in 20m11s
Build Packages / Generate python client (push) Successful in 29s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 23m17s
Build Packages / Create release (push) Skipped
Build Packages / Build documentation (push) Successful in 1m25s
Build Packages / XDS test (neggia plugin) (push) Successful in 19m31s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 21m58s
Build Packages / build:rpm (rocky9) (push) Successful in 30m10s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 25m52s
Build Packages / DIALS test (push) Successful in 29m34s
Build Packages / Unit tests (push) Successful in 2h12m57s

This commit is contained in:
2026-06-12 17:28:18 +02:00
parent 47dc19dd03
commit db68c8dc38
4 changed files with 350 additions and 42 deletions
+24
View File
@@ -12,6 +12,9 @@
#include <fstream>
#include <sstream>
#include <getopt.h>
#include <algorithm>
#include <numeric>
#include <cmath>
#include "../reader/JFJochHDF5Reader.h"
#include "../common/Logger.h"
@@ -968,6 +971,27 @@ int main(int argc, char **argv) {
logger.Info("Reference provided: per-image live scaling already applied; merging directly");
}
// --- Phase 1 diagnostic: distribution of the per-image scale CC vs the
// reference. High per-image CC with low merged CC1/2 => each image is fine
// and the cross-image merge is the problem; low per-image CC => the
// per-image extraction itself is noise. Logged for any reference run.
{
std::vector<float> ccs;
for (const auto &i : indexer.GetIntegrationOutcome())
if (i.image_scale_cc && std::isfinite(*i.image_scale_cc))
ccs.push_back(*i.image_scale_cc);
if (!ccs.empty()) {
std::sort(ccs.begin(), ccs.end());
const double mean = std::accumulate(ccs.begin(), ccs.end(), 0.0) / ccs.size();
auto q = [&](double f) { return ccs[std::min(ccs.size() - 1, static_cast<size_t>(f * ccs.size()))]; };
logger.Info("Per-image scale CC vs reference: n={} mean={:.3f} median={:.3f} "
"p10={:.3f} p90={:.3f} min={:.3f} max={:.3f}",
ccs.size(), mean, q(0.5), q(0.1), q(0.9), ccs.front(), ccs.back());
} else {
logger.Info("Per-image scale CC vs reference: none available");
}
}
auto merge_start = std::chrono::steady_clock::now();
MergeOnTheFly merge_engine(experiment);