Compare commits

...

1 Commits

Author SHA1 Message Date
takaba_k a6e242fec7 accurate sigma estimation on merging with partiality-weighting
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m58s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 15m54s
Build Packages / build:rpm (rocky8) (push) Successful in 16m11s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 16m29s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 16m33s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 17m25s
Build Packages / Build documentation (push) Successful in 51s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 17m33s
Build Packages / Generate python client (push) Successful in 1m38s
Build Packages / build:rpm (rocky9) (push) Successful in 9m50s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 13m30s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 15m6s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 14m48s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 14m2s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 15m5s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 10m5s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 10m42s
Build Packages / Generate python client (pull_request) Successful in 33s
Build Packages / Build documentation (pull_request) Successful in 25s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 12m40s
Build Packages / Create release (pull_request) Has been skipped
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 13m2s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 13m12s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 14m27s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 15m41s
Build Packages / Unit tests (push) Successful in 1h17m42s
Build Packages / Unit tests (pull_request) Successful in 1h6m35s
2026-04-27 14:25:24 +02:00
+7 -15
View File
@@ -241,6 +241,7 @@ namespace {
int hkl_slot;
double I_corr;
double sigma_corr;
double weight;
};
void scale(const ScaleMergeOptions &opt,
@@ -408,18 +409,16 @@ namespace {
struct HKLAccum {
double sum_wI = 0.0;
double sum_w = 0.0;
double sum_wI2 = 0.0;
int count = 0;
double sum_wsigma2 = 0.0;
};
std::vector<HKLAccum> accum(nhkl);
for (const auto &co: corr_obs) {
const double w = 1.0 / (co.sigma_corr * co.sigma_corr);
const double w = co.weight / (co.sigma_corr * co.sigma_corr);
auto &a = accum[co.hkl_slot];
a.sum_wI += w * co.I_corr;
a.sum_w += w;
a.sum_wI2 += w * co.I_corr * co.I_corr;
a.count++;
a.sum_wsigma2 += w * w * co.sigma_corr * co.sigma_corr;
}
for (int h = 0; h < nhkl; ++h) {
@@ -428,15 +427,7 @@ namespace {
continue;
out.merged[h].I = a.sum_wI / a.sum_w;
const double sigma_stat = std::sqrt(1.0 / a.sum_w);
if (a.count >= 2) {
const double var_internal = a.sum_wI2 - (a.sum_wI * a.sum_wI) / a.sum_w;
const double sigma_int = std::sqrt(var_internal / (a.sum_w * (a.count - 1)));
out.merged[h].sigma = std::max(sigma_stat, sigma_int);
} else {
out.merged[h].sigma = sigma_stat;
}
out.merged[h].sigma = std::sqrt(a.sum_wsigma2) / a.sum_w;
}
}
@@ -643,7 +634,8 @@ namespace {
corr_obs.push_back({
o.hkl_slot,
static_cast<double>(r.I) / correction,
o.sigma / correction
o.sigma / correction,
1 / correction
});
}
}